import SSA.Core.WellTypedFramework import SSA.Core.Tactic import SSA.Projects.InstCombine.Base import SSA.Projects.InstCombine.AliveStatements import SSA.Projects.InstCombine.Tactic open SSA InstCombine EDSL Bitvec -- Name:AddSub:1043 -- precondition: true /- %Y = and %Z, C1 %X = xor %Y, C1 %LHS = add %X, 1 %r = add %LHS, %RHS => %or = or %Z, ~C1 %Y = and %Z, C1 %X = xor %Y, C1 %LHS = add %X, 1 %r = sub %RHS, %or -/ theoremalive_AddSub_1043 : forall (alive_AddSub_1043: ā {c : Context BaseType} {e : EnvC c} (w : ā) (C1 Z RHS : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.not w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) ew :w: āNat) (Nat: TypeC1C1: Bitvec wZZ: Bitvec wRHS : BitvecRHS: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2439TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āZ) %v0; %v2 := op:const (Z: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:andC1: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:xorw: āw %v5; %v7 := op:const (w: ā1) %v0; %v8 := pair:%v6 %v7; %v9 := op:add1: ?m.3555w %v8; %v10 := op:const (w: āRHS) %v0; %v11 := pair:%v9 %v10; %v12 := op:addRHS: Bitvec ww %v11 dsl_ret %v12 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2439TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āZ) %v0; %v2 := op:const (Z: Bitvec wC1) %v0; %v3 := op:notC1: Bitvec ww %v2; %v4 := pair:%v1 %v3; %v5 := op:orw: āw %v4; %v6 := pair:%v1 %v2; %v7 := op:andw: āw %v6; %v8 := pair:%v7 %v2; %v9 := op:xorw: āw %v8; %v10 := op:const (w: ā1) %v0; %v11 := pair:%v9 %v10; %v12 := op:add1: ?m.6470w %v11; %v13 := op:const (w: āRHS) %v0; %v14 := pair:%v13 %v5; %v15 := op:subRHS: Bitvec ww %v14 dsl_ret %v15 ] :=w: āGoals accomplished! šā (w : ā) (C1 Z RHS : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.not w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) eā (w : ā) (C1 Z RHS : Bitvec w), eval (Op.add w) (eval (Op.add w) (eval (Op.xor w) (eval (Op.and w) (eval (Op.const Z) () id, eval (Op.const C1) () id) id, eval (Op.const C1) () id) id, eval (Op.const 1) () id) id, eval (Op.const RHS) () id) id ā eval (Op.sub w) (eval (Op.const RHS) () id, eval (Op.or w) (eval (Op.const Z) () id, eval (Op.not w) (eval (Op.const C1) () id) id) id) idā (w : ā) (C1 Z RHS : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.not w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) eā (w : ā) (C1 Z RHS : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Z) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.not w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const RHS) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e-- Name:AddSub:1152 -- precondition: true /- %r = add i1 %x, %y => %r = xor %x, %y -/ theoremGoals accomplished! šalive_AddSub_1152: forall (alive_AddSub_1152: ā {c : Context BaseType} {e : EnvC c} (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eyy: Bitvec 1x : Bitvecx: Bitvec 11) ,1: ?m.64000TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.63990TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.64013x) %v0; %v2 := op:const (x: Bitvec 1y) %v0; %v3 := pair:%v1 %v2; %v4 := op:addy: Bitvec 11 %v3 dsl_ret %v4 ] ā1: ?m.64451TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.63990TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.64866x) %v0; %v2 := op:const (x: Bitvec 1y) %v0; %v3 := pair:%v1 %v2; %v4 := op:xory: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.65303Goals accomplished! šā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:AddSub:1156 -- precondition: true /- %a = add %b, %b => %a = shl %b, 1 -/ theoremGoals accomplished! šalive_AddSub_1156 : forall (alive_AddSub_1156: ā {c : Context BaseType} {e : EnvC c} (w : ā) (b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.pair Context.Var.last Context.Var.last) (TSSA.assign 3 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) ew :w: āNat) (Nat: Typeb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.76911TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āb) %v0; %v2 := pair:%v1 %v1; %v3 := op:addb: Bitvec ww %v2 dsl_ret %v3 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.76911TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āb) %v0; %v2 := op:const (b: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:shl1: ?m.77779w %v3 dsl_ret %v4 ] :=w: āGoals accomplished! šā (w : ā) (b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.pair Context.Var.last Context.Var.last) (TSSA.assign 3 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.pair Context.Var.last Context.Var.last) (TSSA.assign 3 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.pair Context.Var.last Context.Var.last) (TSSA.assign 3 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:AddSub:1164 -- precondition: true /- %na = sub 0, %a %c = add %na, %b => %na = sub 0, %a %c = sub %b, %a -/ theoremGoals accomplished! šalive_AddSub_1164 : forall (alive_AddSub_1164: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.93462TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.93576a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3; %v5 := op:const (w: āb) %v0; %v6 := pair:%v4 %v5; %v7 := op:addb: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.93462TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.94958a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3; %v5 := op:const (w: āb) %v0; %v6 := pair:%v5 %v2; %v7 := op:subb: Bitvec ww %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:AddSub:1165 -- precondition: true /- %na = sub 0, %a %nb = sub 0, %b %c = add %na, %nb => %ab = add %a, %b %na = sub 0, %a %nb = sub 0, %b %c = sub 0, %ab -/ theoremGoals accomplished! šalive_AddSub_1165 : forall (alive_AddSub_1165: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 13 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.119993TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.120107a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := op:const (0: ?m.120769b) %v0; %v7 := pair:%v5 %v6; %v8 := op:subb: Bitvec ww %v7; %v9 := pair:%v4 %v8; %v10 := op:addw: āw %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.119993TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:addb: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v5 %v1; %v7 := op:sub0: ?m.122606w %v6; %v8 := op:const (w: ā0) %v0; %v9 := pair:%v8 %v2; %v10 := op:sub0: ?m.123157w %v9; %v11 := op:const (w: ā0) %v0; %v12 := pair:%v11 %v4; %v13 := op:sub0: ?m.123736w %v12 dsl_ret %v13 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 13 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.add w) (eval (Op.sub w) (eval (Op.const 0) () id, eval (Op.const a) () id) id, eval (Op.sub w) (eval (Op.const 0) () id, eval (Op.const b) () id) id) id ā eval (Op.sub w) (eval (Op.const 0) () id, eval (Op.add w) (eval (Op.const a) () id, eval (Op.const b) () id) id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 13 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 13 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e-- Name:AddSub:1176 -- precondition: true /- %nb = sub 0, %b %c = add %a, %nb => %nb = sub 0, %b %c = sub %a, %b -/ theoremGoals accomplished! šalive_AddSub_1176 : forall (alive_AddSub_1176: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.161773TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.161887b) %v0; %v3 := pair:%v1 %v2; %v4 := op:subb: Bitvec ww %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v4; %v7 := op:adda: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.161773TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.163269b) %v0; %v3 := pair:%v1 %v2; %v4 := op:subb: Bitvec ww %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v2; %v7 := op:suba: Bitvec ww %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:AddSub:1202 -- precondition: true /- %nx = xor %x, -1 %r = add %nx, C => %nx = xor %x, -1 %r = sub (C - 1), %x -/ theoremGoals accomplished! šalive_AddSub_1202 : forall (alive_AddSub_1202: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.188845TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.189101w %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v4 %v5; %v7 := op:addC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.188845TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.190489w %v3; %v5 := op:const (w: āC) %v0; %v6 := op:const (C: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:sub1: ?m.191201w %v7; %v9 := pair:%v8 %v1; %v10 := op:subw: āw %v9 dsl_ret %v10 ] :=w: āGoals accomplished! šā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e-- Name:AddSub:1295 -- precondition: true /- %aab = and %a, %b %aob = xor %a, %b %c = add %aab, %aob => %aab = and %a, %b %aob = xor %a, %b %c = or %a, %b -/ theoremGoals accomplished! šalive_AddSub_1295 : forall (alive_AddSub_1295: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.222745TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:addw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.222745TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:orw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AddSub:1309 -- precondition: true /- %lhs = and %a, %b %rhs = or %a, %b %c = add %lhs, %rhs => %lhs = and %a, %b %rhs = or %a, %b %c = add %a, %b -/ theoremGoals accomplished! šalive_AddSub_1309 : forall (alive_AddSub_1309: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.248921TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:orw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:addw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.248921TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:orw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:addw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AddSub:1539 -- precondition: true /- %na = sub 0, %a %r = sub %x, %na => %na = sub 0, %a %r = add %x, %a -/ theoremGoals accomplished! šalive_AddSub_1539 : forall (alive_AddSub_1539: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wx : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.274818TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.274932a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3; %v5 := op:const (w: āx) %v0; %v6 := pair:%v5 %v4; %v7 := op:subx: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.274818TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.276314a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3; %v5 := op:const (w: āx) %v0; %v6 := pair:%v5 %v2; %v7 := op:addx: Bitvec ww %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (a x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (a x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:AddSub:1539-2 -- precondition: true /- %r = sub %x, C => %r = add %x, -C -/ theoremGoals accomplished! šalive_AddSub_1539_2 : forall (alive_AddSub_1539_2: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.neg w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.300315TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:subC: Bitvec ww %v3 dsl_ret %v4 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.300315TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC) %v0; %v3 := op:negC: Bitvec ww %v2; %v4 := pair:%v1 %v3; %v5 := op:addw: āw %v4 dsl_ret %v5 ] :=w: āGoals accomplished! šā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.neg w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.neg w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.neg w) Context.Var.last TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e-- Name:AddSub:1556 -- precondition: true /- %r = sub i1 %x, %y => %r = xor %x, %y -/ theoremGoals accomplished! šalive_AddSub_1556: forall (alive_AddSub_1556: ā {c : Context BaseType} {e : EnvC c} (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eyy: Bitvec 1x : Bitvecx: Bitvec 11) ,1: ?m.319362TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.319352TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.319375x) %v0; %v2 := op:const (x: Bitvec 1y) %v0; %v3 := pair:%v1 %v2; %v4 := op:suby: Bitvec 11 %v3 dsl_ret %v4 ] ā1: ?m.319813TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.319352TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.320228x) %v0; %v2 := op:const (x: Bitvec 1y) %v0; %v3 := pair:%v1 %v2; %v4 := op:xory: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.320665Goals accomplished! šā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (y x : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:AddSub:1560 -- precondition: true /- %r = sub -1, %a => %r = xor %a, -1 -/ theoremGoals accomplished! šalive_AddSub_1560 : forall (alive_AddSub_1560: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (-1)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) ew :w: āNat) (Nat: Typea : Bitveca: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.332540TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (-w: ā1) %v0; %v2 := op:const (1: ?m.332653a) %v0; %v3 := pair:%v1 %v2; %v4 := op:suba: Bitvec ww %v3 dsl_ret %v4 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.332540TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.333667w %v3 dsl_ret %v4 ] :=w: āGoals accomplished! šā (w : ā) (a : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (-1)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (a : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (-1)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (a : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (-1)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const a) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:AddSub:1564 -- precondition: true /- %nx = xor %x, -1 %r = sub C, %nx => %nx = xor %x, -1 %r = add %x, (C + 1) -/ theoremGoals accomplished! šalive_AddSub_1564 : forall (alive_AddSub_1564: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.349763TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.350019w %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v5 %v4; %v7 := op:subC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.349763TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.351407w %v3; %v5 := op:const (w: āC) %v0; %v6 := op:const (C: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:add1: ?m.352119w %v7; %v9 := pair:%v1 %v8; %v10 := op:addw: āw %v9 dsl_ret %v10 ] :=w: āGoals accomplished! šā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e-- Name:AddSub:1574 -- precondition: true /- %rhs = add %X, C2 %r = sub C, %rhs => %rhs = add %X, C2 %r = sub (C - C2), %X -/ theoremGoals accomplished! šalive_AddSub_1574 : forall (alive_AddSub_1574: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wCC: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.383444TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC2: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v5 %v4; %v7 := op:subC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.383444TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC2: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v5 %v2; %v7 := op:subC: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:subw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AddSub:1614 -- precondition: true /- %Op1 = add %X, %Y %r = sub %X, %Op1 => %Op1 = add %X, %Y %r = sub 0, %Y -/ theoremGoals accomplished! šalive_AddSub_1614 : forall (alive_AddSub_1614: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.421451TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wY) %v0; %v3 := pair:%v1 %v2; %v4 := op:addY: Bitvec ww %v3; %v5 := pair:%v1 %v4; %v6 := op:subw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.421451TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wY) %v0; %v3 := pair:%v1 %v2; %v4 := op:addY: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v5 %v2; %v7 := op:sub0: ?m.423416w %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:AddSub:1619 -- precondition: true /- %Op0 = sub %X, %Y %r = sub %Op0, %X => %Op0 = sub %X, %Y %r = sub 0, %Y -/ theoremGoals accomplished! šalive_AddSub_1619 : forall (alive_AddSub_1619: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.447161TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wY) %v0; %v3 := pair:%v1 %v2; %v4 := op:subY: Bitvec ww %v3; %v5 := pair:%v4 %v1; %v6 := op:subw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.447161TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wY) %v0; %v3 := pair:%v1 %v2; %v4 := op:subY: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v5 %v2; %v7 := op:sub0: ?m.449126w %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:AddSub:1624 -- precondition: true /- %Op0 = or %A, %B %Op1 = xor %A, %B %r = sub %Op0, %Op1 => %Op0 = or %A, %B %Op1 = xor %A, %B %r = and %A, %B -/ theoremGoals accomplished! šalive_AddSub_1624 : forall (alive_AddSub_1624: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.473159TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:subw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.473159TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:andw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:135 -- precondition: true /- %op = xor %X, C1 %r = and %op, C2 => %a = and %X, C2 %op = xor %X, C1 %r = xor %a, (C1 & C2) -/ theoremGoals accomplished! šalive_AndOrXor_135 : forall (alive_AndOrXor_135: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC1C1: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.499116TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorC1: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v4 %v5; %v7 := op:andC2: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.499116TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := pair:%v1 %v2; %v4 := op:andC2: Bitvec ww %v3; %v5 := op:const (w: āC1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xorC1: Bitvec ww %v6; %v8 := pair:%v5 %v2; %v9 := op:andw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 C2 : Bitvec w), eval (Op.and w) (eval (Op.xor w) (eval (Op.const X) () id, eval (Op.const C1) () id) id, eval (Op.const C2) () id) id ā eval (Op.xor w) (eval (Op.and w) (eval (Op.const X) () id, eval (Op.const C2) () id) id, eval (Op.and w) (eval (Op.const C1) () id, eval (Op.const C2) () id) id) idā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 C2 : Bitvec w), (X ^^^ C1) &&& C2 = X &&& C2 ^^^ C1 &&& C2ā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:144 -- precondition: true /- %op = or %X, C1 %r = and %op, C2 => %o = or %X, (C1 & C2) %op = or %X, C1 %r = and %o, C2 -/ theoremGoals accomplished! šalive_AndOrXor_144 : forall (alive_AndOrXor_144: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC1C1: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.544476TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:orC1: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v4 %v5; %v7 := op:andC2: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.544476TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC1) %v0; %v3 := op:const (C1: Bitvec wC2) %v0; %v4 := pair:%v2 %v3; %v5 := op:andC2: Bitvec ww %v4; %v6 := pair:%v1 %v5; %v7 := op:orw: āw %v6; %v8 := pair:%v1 %v2; %v9 := op:orw: āw %v8; %v10 := pair:%v7 %v3; %v11 := op:andw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 C2 : Bitvec w), eval (Op.and w) (eval (Op.or w) (eval (Op.const X) () id, eval (Op.const C1) () id) id, eval (Op.const C2) () id) id ā eval (Op.and w) (eval (Op.or w) (eval (Op.const X) () id, eval (Op.and w) (eval (Op.const C1) () id, eval (Op.const C2) () id) id) id, eval (Op.const C2) () id) idā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 C2 : Bitvec w), (X ||| C1) &&& C2 = (X ||| C1 &&& C2) &&& C2ā (w : ā) (X C1 C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:698 -- precondition: true /- %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, 0 %op1 = icmp eq %a2, 0 %r = and %op0, %op1 => %or = or %b, %d %a3 = and %a, %or %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, 0 %op1 = icmp eq %a2, 0 %r = icmp eq %a3, 0 -/ theoremGoals accomplished! šalive_AndOrXor_698 : forall (alive_AndOrXor_698: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 18 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))))))) TSSA.rgn0) (TSSA.assign 19 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) Context.Var.last) (TSSA.assign 20 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wbb: Bitvec wd : Bitvecd: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.591358TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.591379a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := op:const (w: ād) %v0; %v6 := pair:%v1 %v5; %v7 := op:andd: Bitvec ww %v6; %v8 := op:const (w: ā0) %v0; %v9 := pair:%v4 %v8; %v10 := op:icmp eq0: ?m.592648w %v9; %v11 := op:const (w: ā0) %v0; %v12 := pair:%v7 %v11; %v13 := op:icmp eq0: ?m.593214w %v12; %v14 := pair:%v10 %v13; %v15 := op:andw: ā1 %v14 dsl_ret %v15 ] ā1: ?m.593858TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.591358TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.594193b) %v0; %v2 := op:const (b: Bitvec wd) %v0; %v3 := pair:%v1 %v2; %v4 := op:ord: Bitvec ww %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v4; %v7 := op:anda: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:andw: āw %v8; %v10 := pair:%v5 %v2; %v11 := op:andw: āw %v10; %v12 := op:const (w: ā0) %v0; %v13 := pair:%v9 %v12; %v14 := op:icmp eq0: ?m.596239w %v13; %v15 := op:const (w: ā0) %v0; %v16 := pair:%v11 %v15; %v17 := op:icmp eq0: ?m.596820w %v16; %v18 := op:const (w: ā0) %v0; %v19 := pair:%v7 %v18; %v20 := op:icmp eq0: ?m.597430w %v19 dsl_ret %v20 ] :=w: āGoals accomplished! šā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 18 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))))))) TSSA.rgn0) (TSSA.assign 19 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) Context.Var.last) (TSSA.assign 20 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), eval (Op.and 1) (eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.const 0) () id) id, eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const d) () id) id, eval (Op.const 0) () id) id) id ā eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.or w) (eval (Op.const b) () id, eval (Op.const d) () id) id) id, eval (Op.const 0) () id) idā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 18 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))))))) TSSA.rgn0) (TSSA.assign 19 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) Context.Var.last) (TSSA.assign 20 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), ofBool (a &&& b == 0) &&& ofBool (a &&& d == 0) = ofBool (a &&& (b ||| d) == 0)ā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 18 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))))))) TSSA.rgn0) (TSSA.assign 19 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) Context.Var.last) (TSSA.assign 20 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))))) e-- Name:AndOrXor:709 -- precondition: true /- %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, %b %op1 = icmp eq %a2, %d %r = and %op0, %op1 => %or = or %b, %d %a3 = and %a, %or %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, %b %op1 = icmp eq %a2, %d %r = icmp eq %a3, %or -/ theoremGoals accomplished! šalive_AndOrXor_709 : forall (alive_AndOrXor_709: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wbb: Bitvec wd : Bitvecd: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.664599TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.664620a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := op:const (w: ād) %v0; %v6 := pair:%v1 %v5; %v7 := op:andd: Bitvec ww %v6; %v8 := pair:%v4 %v2; %v9 := op:icmp eqw: āw %v8; %v10 := pair:%v7 %v5; %v11 := op:icmp eqw: āw %v10; %v12 := pair:%v9 %v11; %v13 := op:andw: ā1 %v12 dsl_ret %v13 ] ā1: ?m.666715TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.664599TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.667050b) %v0; %v2 := op:const (b: Bitvec wd) %v0; %v3 := pair:%v1 %v2; %v4 := op:ord: Bitvec ww %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v4; %v7 := op:anda: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:andw: āw %v8; %v10 := pair:%v5 %v2; %v11 := op:andw: āw %v10; %v12 := pair:%v9 %v1; %v13 := op:icmp eqw: āw %v12; %v14 := pair:%v11 %v2; %v15 := op:icmp eqw: āw %v14; %v16 := pair:%v7 %v4; %v17 := op:icmp eqw: āw %v16 dsl_ret %v17 ] :=w: āGoals accomplished! šā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), eval (Op.and 1) (eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.const b) () id) id, eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const d) () id) id, eval (Op.const d) () id) id) id ā eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.or w) (eval (Op.const b) () id, eval (Op.const d) () id) id) id, eval (Op.or w) (eval (Op.const b) () id, eval (Op.const d) () id) id) idā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), ofBool (a &&& b == b) &&& ofBool (a &&& d == d) = ofBool (a &&& (b ||| d) == b ||| d)ā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) e-- Name:AndOrXor:716 -- precondition: true /- %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, %a %op1 = icmp eq %a2, %a %r = and %op0, %op1 => %a4 = and %b, %d %a3 = and %a, %a4 %a1 = and %a, %b %a2 = and %a, %d %op0 = icmp eq %a1, %a %op1 = icmp eq %a2, %a %r = icmp eq %a3, %a -/ theoremGoals accomplished! šalive_AndOrXor_716 : forall (alive_AndOrXor_716: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wbb: Bitvec wd : Bitvecd: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.736237TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.736258a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := op:const (w: ād) %v0; %v6 := pair:%v1 %v5; %v7 := op:andd: Bitvec ww %v6; %v8 := pair:%v4 %v1; %v9 := op:icmp eqw: āw %v8; %v10 := pair:%v7 %v1; %v11 := op:icmp eqw: āw %v10; %v12 := pair:%v9 %v11; %v13 := op:andw: ā1 %v12 dsl_ret %v13 ] ā1: ?m.738378TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.736237TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.738713b) %v0; %v2 := op:const (b: Bitvec wd) %v0; %v3 := pair:%v1 %v2; %v4 := op:andd: Bitvec ww %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v4; %v7 := op:anda: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:andw: āw %v8; %v10 := pair:%v5 %v2; %v11 := op:andw: āw %v10; %v12 := pair:%v9 %v5; %v13 := op:icmp eqw: āw %v12; %v14 := pair:%v11 %v5; %v15 := op:icmp eqw: āw %v14; %v16 := pair:%v7 %v5; %v17 := op:icmp eqw: āw %v16 dsl_ret %v17 ] :=w: āGoals accomplished! šā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), eval (Op.and 1) (eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.const a) () id) id, eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const d) () id) id, eval (Op.const a) () id) id) id ā eval (Op.icmp Comparison.eq w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.and w) (eval (Op.const b) () id, eval (Op.const d) () id) id) id, eval (Op.const a) () id) idā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) eā (w : ā) (a b d : Bitvec w), ofBool (a &&& b == a) &&& ofBool (a &&& d == a) = ofBool (a &&& (b &&& d) == a)ā (w : ā) (a b d : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const d) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const d) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 15 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 16 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 17 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))))) e-- Name:AndOrXor:794 -- precondition: true /- %op0 = icmp sgt %a, %b %op1 = icmp ne %a, %b %r = and %op0, %op1 => %op0 = icmp sgt %a, %b %op1 = icmp ne %a, %b %r = icmp sgt %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_794 : forall (alive_AndOrXor_794: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.806865TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.806884a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp sgtb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:andw: ā1 %v7 dsl_ret %v8 ] ā1: ?m.808055TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.806865TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.808470a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp sgtb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:icmp sgtw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.and 1) (eval (Op.icmp Comparison.sgt w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.icmp Comparison.ne w) (eval (Op.const a) () id, eval (Op.const b) () id) id) id ā eval (Op.icmp Comparison.sgt w) (eval (Op.const a) () id, eval (Op.const b) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.sgt w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:827 -- precondition: true /- %op0 = icmp eq %a, 0 %op1 = icmp eq %b, 0 %r = and %op0, %op1 => %o = or %a, %b %op0 = icmp eq %a, 0 %op1 = icmp eq %b, 0 %r = icmp eq %o, 0 -/ theoremGoals accomplished! šalive_AndOrXor_827 : forall (alive_AndOrXor_827: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.833297TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.833316a) %v0; %v2 := op:const (a: Bitvec w0) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp eq0: ?m.833555w %v3; %v5 := op:const (w: āb) %v0; %v6 := op:const (b: Bitvec w0) %v0; %v7 := pair:%v5 %v6; %v8 := op:icmp eq0: ?m.834237w %v7; %v9 := pair:%v4 %v8; %v10 := op:andw: ā1 %v9 dsl_ret %v10 ] ā1: ?m.834846TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.833297TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.835181a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:orb: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v1 %v5; %v7 := op:icmp eq0: ?m.835919w %v6; %v8 := op:const (w: ā0) %v0; %v9 := pair:%v2 %v8; %v10 := op:icmp eq0: ?m.836470w %v9; %v11 := op:const (w: ā0) %v0; %v12 := pair:%v4 %v11; %v13 := op:icmp eq0: ?m.837049w %v12 dsl_ret %v13 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.and 1) (eval (Op.icmp Comparison.eq w) (eval (Op.const a) () id, eval (Op.const 0) () id) id, eval (Op.icmp Comparison.eq w) (eval (Op.const b) () id, eval (Op.const 0) () id) id) id ā eval (Op.icmp Comparison.eq w) (eval (Op.or w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.const 0) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e-- Name:AndOrXor:887-2 -- precondition: true /- %op0 = icmp eq %a, C1 %op1 = icmp ne %a, C1 %r = and %op0, %op1 => %op0 = icmp eq %a, C1 %op1 = icmp ne %a, C1 %r = false -/ theoremGoals accomplished! šalive_AndOrXor_887_2 : forall (alive_AndOrXor_887_2: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a C1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wC1 : BitvecC1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.875328TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.875347a) %v0; %v2 := op:const (a: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp eqC1: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:andw: ā1 %v7 dsl_ret %v8 ] ā1: ?m.876518TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.875328TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.876933a) %v0; %v2 := op:const (a: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp eqC1: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := op:const (āw: āfalse) %v0; %v8 := op:copyfalse: Bool1 %v7 dsl_ret %v8 ] :=1: ?m.878294Goals accomplished! šā (w : ā) (a C1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a C1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a C1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:1230 ~A & ~B -> ~(A | B) -- precondition: true /- %op0 = xor %notOp0, -1 %op1 = xor %notOp1, -1 %r = and %op0, %op1 => %or = or %notOp0, %notOp1 %op0 = xor %notOp0, -1 %op1 = xor %notOp1, -1 %r = xor %or, -1 -/ theoremGoals accomplished! šalive_AndOrXor_1230__A__B___A__B : forall (alive_AndOrXor_1230__A__B___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (notOp0 notOp1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const notOp1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const notOp1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) ew :w: āNat) (Nat: TypenotOp0notOp0: Bitvec wnotOp1 : BitvecnotOp1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.899897TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ānotOp0) %v0; %v2 := op:const (-notOp0: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.900153w %v3; %v5 := op:const (w: ānotOp1) %v0; %v6 := op:const (-notOp1: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.900841w %v7; %v9 := pair:%v4 %v8; %v10 := op:andw: āw %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.899897TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ānotOp0) %v0; %v2 := op:const (notOp0: Bitvec wnotOp1) %v0; %v3 := pair:%v1 %v2; %v4 := op:ornotOp1: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xor1: ?m.902546w %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v2 %v8; %v10 := op:xor1: ?m.903108w %v9; %v11 := op:const (-w: ā1) %v0; %v12 := pair:%v4 %v11; %v13 := op:xor1: ?m.903698w %v12 dsl_ret %v13 ] :=w: āGoals accomplished! šā (w : ā) (notOp0 notOp1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const notOp1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const notOp1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (notOp0 notOp1 : Bitvec w), eval (Op.and w) (eval (Op.xor w) (eval (Op.const notOp0) () id, eval (Op.const (-1)) () id) id, eval (Op.xor w) (eval (Op.const notOp1) () id, eval (Op.const (-1)) () id) id) id ā eval (Op.xor w) (eval (Op.or w) (eval (Op.const notOp0) () id, eval (Op.const notOp1) () id) id, eval (Op.const (-1)) () id) idā (w : ā) (notOp0 notOp1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const notOp1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const notOp1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (notOp0 notOp1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const notOp1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const notOp0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const notOp1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e-- Name:AndOrXor:1241 (A|B) & ~(A&B) => A^B -- precondition: true /- %op0 = or %A, %B %notOp1 = and %A, %B %op1 = xor %notOp1, -1 %r = and %op0, %op1 => %op0 = or %A, %B %notOp1 = and %A, %B %op1 = xor %notOp1, -1 %r = xor %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_1241_AB__AB__AB : forall (alive_AndOrXor_1241_AB__AB__AB: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.942517TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:andw: āw %v5; %v7 := op:const (-w: ā1) %v0; %v8 := pair:%v6 %v7; %v9 := op:xor1: ?m.943647w %v8; %v10 := pair:%v4 %v9; %v11 := op:andw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.942517TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:andw: āw %v5; %v7 := op:const (-w: ā1) %v0; %v8 := pair:%v6 %v7; %v9 := op:xor1: ?m.945793w %v8; %v10 := pair:%v1 %v2; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.and w) (eval (Op.or w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const (-1)) () id) id) id ā eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:1247 ~(A&B) & (A|B) => A^B -- precondition: true /- %notOp0 = and %A, %B %op0 = xor %notOp0, -1 %op1 = or %A, %B %r = and %op0, %op1 => %notOp0 = and %A, %B %op0 = xor %notOp0, -1 %op1 = or %A, %B %r = xor %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_1247_AB__AB__AB : forall (alive_AndOrXor_1247_AB__AB__AB: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.977463TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.978219w %v6; %v8 := pair:%v1 %v2; %v9 := op:orw: āw %v8; %v10 := pair:%v7 %v9; %v11 := op:andw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.977463TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.980370w %v6; %v8 := pair:%v1 %v2; %v9 := op:orw: āw %v8; %v10 := pair:%v1 %v2; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.and w) (eval (Op.xor w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const (-1)) () id) id, eval (Op.or w) (eval (Op.const A) () id, eval (Op.const B) () id) id) id ā eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:1253 A & (A^B) -> A & ~B -- precondition: true /- %op0 = xor %A, %B %r = and %op0, %A => %notB = xor %B, -1 %op0 = xor %A, %B %r = and %A, %notB -/ theoremGoals accomplished! šalive_AndOrXor_1253_A__AB___A__B : forall (alive_AndOrXor_1253_A__AB___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1011474TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := pair:%v4 %v1; %v6 := op:andw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1011474TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1012940w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v1; %v7 := op:xorA: Bitvec ww %v6; %v8 := pair:%v5 %v4; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 6 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:1280 (~A|B)&A -> A&B -- precondition: true /- %nA = xor %A, -1 %op0 = or %nA, %B %r = and %op0, %A => %nA = xor %A, -1 %op0 = or %nA, %B %r = and %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_1280_ABA___AB : forall (alive_AndOrXor_1280_ABA___AB: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1046065TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1046321w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v4 %v5; %v7 := op:orB: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:andw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1046065TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1048088w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v4 %v5; %v7 := op:orB: Bitvec ww %v6; %v8 := pair:%v1 %v5; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:1288 (A ^ B) & ((B ^ C) ^ A) -> (A ^ B) & ~C -- precondition: true /- %op0 = xor %A, %B %x = xor %B, %C %op1 = xor %x, %A %r = and %op0, %op1 => %op0 = xor %A, %B %negC = xor %C, -1 %x = xor %B, %C %op1 = xor %x, %A %r = and %op0, %negC -/ theoremGoals accomplished! šalive_AndOrXor_1288_A__B__B__C__A___A__B__C : forall (alive_AndOrXor_1288_A__B__B__C__A___A__B__C: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wCC: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1080455TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v2 %v5; %v7 := op:xorC: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:andw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1080455TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := op:const (-C: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1083418w %v7; %v9 := pair:%v2 %v5; %v10 := op:xorw: āw %v9; %v11 := pair:%v10 %v1; %v12 := op:xorw: āw %v11; %v13 := pair:%v4 %v8; %v14 := op:andw: āw %v13 dsl_ret %v14 ] :=w: āGoals accomplished! šā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (A C B : Bitvec w), eval (Op.and w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const C) () id) id, eval (Op.const A) () id) id) id ā eval (Op.and w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.const C) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e-- Name:AndOrXor:1294 (A | B) & ((~A) ^ B) -> (A & B) -- precondition: true /- %op0 = or %A, %B %x = xor %A, -1 %op1 = xor %x, %B %r = and %op0, %op1 => %op0 = or %A, %B %x = xor %A, -1 %op1 = xor %x, %B %r = and %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_1294_A__B__A__B___A__B : forall (alive_AndOrXor_1294_A__B__A__B___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1135897TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xor1: ?m.1136653w %v6; %v8 := pair:%v7 %v2; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:andw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1135897TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xor1: ?m.1138804w %v6; %v8 := pair:%v7 %v2; %v9 := op:xorw: āw %v8; %v10 := pair:%v1 %v2; %v11 := op:andw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.and w) (eval (Op.or w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const B) () id) id) id ā eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 11 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:1683-1 -- precondition: true /- %op0 = icmp ugt %a, %b %op1 = icmp eq %a, %b %r = or %op0, %op1 => %op0 = icmp ugt %a, %b %op1 = icmp eq %a, %b %r = icmp uge %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_1683_1 : forall (alive_AndOrXor_1683_1: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1173376TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1173395a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp ugtb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp eqw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:orw: ā1 %v7 dsl_ret %v8 ] ā1: ?m.1174566TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1173376TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1174981a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp ugtb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp eqw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:icmp ugew: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.or 1) (eval (Op.icmp Comparison.ugt w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.icmp Comparison.eq w) (eval (Op.const a) () id, eval (Op.const b) () id) id) id ā eval (Op.icmp Comparison.uge w) (eval (Op.const a) () id, eval (Op.const b) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:1683-2 -- precondition: true /- %op0 = icmp uge %a, %b %op1 = icmp ne %a, %b %r = or %op0, %op1 => %op0 = icmp uge %a, %b %op1 = icmp ne %a, %b %r = true -/ theoremGoals accomplished! šalive_AndOrXor_1683_2 : forall (alive_AndOrXor_1683_2: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1199618TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1199637a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp ugeb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:orw: ā1 %v7 dsl_ret %v8 ] ā1: ?m.1200808TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1199618TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1201223a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp ugeb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := op:const (āw: ātrue) %v0; %v8 := op:copytrue: Bool1 %v7 dsl_ret %v8 ] :=1: ?m.1202584Goals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.copy 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:1704 -- precondition: true /- %cmp1 = icmp eq %B, 0 %cmp2 = icmp ult %A, %B %r = or %cmp1, %cmp2 => %b1 = add %B, -1 %cmp1 = icmp eq %B, 0 %cmp2 = icmp ult %A, %B %r = icmp uge %b1, %A -/ theoremGoals accomplished! šalive_AndOrXor_1704 : forall (alive_AndOrXor_1704: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1224085TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1224104B) %v0; %v2 := op:const (B: Bitvec w0) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp eq0: ?m.1224343w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v1; %v7 := op:icmp ultA: Bitvec ww %v6; %v8 := pair:%v4 %v7; %v9 := op:orw: ā1 %v8 dsl_ret %v9 ] ā1: ?m.1225457TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1224085TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1225872B) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:add1: ?m.1226111w %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v1 %v5; %v7 := op:icmp eq0: ?m.1226639w %v6; %v8 := op:const (w: āA) %v0; %v9 := pair:%v8 %v1; %v10 := op:icmp ultA: Bitvec ww %v9; %v11 := pair:%v4 %v8; %v12 := op:icmp ugew: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or 1) (eval (Op.icmp Comparison.eq w) (eval (Op.const B) () id, eval (Op.const 0) () id) id, eval (Op.icmp Comparison.ult w) (eval (Op.const A) () id, eval (Op.const B) () id) id) id ā eval (Op.icmp Comparison.uge w) (eval (Op.add w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id, eval (Op.const A) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ult w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:1705 -- precondition: true /- %cmp1 = icmp eq %B, 0 %cmp2 = icmp ugt %B, %A %r = or %cmp1, %cmp2 => %b1 = add %B, -1 %cmp1 = icmp eq %B, 0 %cmp2 = icmp ugt %B, %A %r = icmp uge %b1, %A -/ theoremGoals accomplished! šalive_AndOrXor_1705 : forall (alive_AndOrXor_1705: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1267103TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1267122B) %v0; %v2 := op:const (B: Bitvec w0) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp eq0: ?m.1267361w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v1 %v5; %v7 := op:icmp ugtA: Bitvec ww %v6; %v8 := pair:%v4 %v7; %v9 := op:orw: ā1 %v8 dsl_ret %v9 ] ā1: ?m.1268475TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1267103TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1268890B) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:add1: ?m.1269129w %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v1 %v5; %v7 := op:icmp eq0: ?m.1269657w %v6; %v8 := op:const (w: āA) %v0; %v9 := pair:%v1 %v8; %v10 := op:icmp ugtA: Bitvec ww %v9; %v11 := pair:%v4 %v8; %v12 := op:icmp ugew: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or 1) (eval (Op.icmp Comparison.eq w) (eval (Op.const B) () id, eval (Op.const 0) () id) id, eval (Op.icmp Comparison.ugt w) (eval (Op.const B) () id, eval (Op.const A) () id) id) id ā eval (Op.icmp Comparison.uge w) (eval (Op.add w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id, eval (Op.const A) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.eq w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ugt w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:1733 -- precondition: true /- %cmp1 = icmp ne %A, 0 %cmp2 = icmp ne %B, 0 %r = or %cmp1, %cmp2 => %or = or %A, %B %cmp1 = icmp ne %A, 0 %cmp2 = icmp ne %B, 0 %r = icmp ne %or, 0 -/ theoremGoals accomplished! šalive_AndOrXor_1733 : forall (alive_AndOrXor_1733: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1310221TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1310240A) %v0; %v2 := op:const (A: Bitvec w0) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp ne0: ?m.1310479w %v3; %v5 := op:const (w: āB) %v0; %v6 := op:const (B: Bitvec w0) %v0; %v7 := pair:%v5 %v6; %v8 := op:icmp ne0: ?m.1311161w %v7; %v9 := pair:%v4 %v8; %v10 := op:orw: ā1 %v9 dsl_ret %v10 ] ā1: ?m.1311770TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1310221TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.1312105A) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := pair:%v1 %v5; %v7 := op:icmp ne0: ?m.1312843w %v6; %v8 := op:const (w: ā0) %v0; %v9 := pair:%v2 %v8; %v10 := op:icmp ne0: ?m.1313394w %v9; %v11 := op:const (w: ā0) %v0; %v12 := pair:%v4 %v11; %v13 := op:icmp ne0: ?m.1313973w %v12 dsl_ret %v13 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or 1) (eval (Op.icmp Comparison.ne w) (eval (Op.const A) () id, eval (Op.const 0) () id) id, eval (Op.icmp Comparison.ne w) (eval (Op.const B) () id, eval (Op.const 0) () id) id) id ā eval (Op.icmp Comparison.ne w) (eval (Op.or w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const 0) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const 0) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e-- Name:AndOrXor:2063 (X ^ C1) | C2 --> (X | C2) ^ (C1 & ~C2) -- precondition: true /- %op0 = xor %x, C1 %r = or %op0, C => %or = or %x, C %op0 = xor %x, C1 %r = xor %or, (C1 & ~C) -/ theoremGoals accomplished! šalive_AndOrXor_2063__X__C1__C2____X__C2__C1__C2 : forall (alive_AndOrXor_2063__X__C1__C2____X__C2__C1__C2: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C1 C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.not w) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC1C1: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1351999TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorC1: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v4 %v5; %v7 := op:orC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1351999TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:orC: Bitvec ww %v3; %v5 := op:const (w: āC1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xorC1: Bitvec ww %v6; %v8 := op:notw: āw %v2; %v9 := pair:%v5 %v8; %v10 := op:andw: āw %v9; %v11 := pair:%v4 %v10; %v12 := op:xorw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (x C1 C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.not w) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (x C1 C : Bitvec w), eval (Op.or w) (eval (Op.xor w) (eval (Op.const x) () id, eval (Op.const C1) () id) id, eval (Op.const C) () id) id ā eval (Op.xor w) (eval (Op.or w) (eval (Op.const x) () id, eval (Op.const C) () id) id, eval (Op.and w) (eval (Op.const C1) () id, eval (Op.not w) (eval (Op.const C) () id) id) id) idā (w : ā) (x C1 C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.not w) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (x C1 C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.not w) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2113 ((~A & B) | A) -> (A | B) -- precondition: true /- %negA = xor %A, -1 %op0 = and %negA, %B %r = or %op0, %A => %negA = xor %A, -1 %op0 = and %negA, %B %r = or %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_2113___A__B__A___A__B : forall (alive_AndOrXor_2113___A__B__A___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1398574TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1398830w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v4 %v5; %v7 := op:andB: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1398574TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1400597w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v4 %v5; %v7 := op:andB: Bitvec ww %v6; %v8 := pair:%v1 %v5; %v9 := op:orw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2118 ((A & B) | ~A) -> (~A | B) -- precondition: true /- %negA = xor %A, -1 %op0 = and %A, %B %r = or %op0, %negA => %negA = xor %A, -1 %op0 = and %A, %B %r = or %negA, %B -/ theoremGoals accomplished! šalive_AndOrXor_2118___A__B__A___A__B : forall (alive_AndOrXor_2118___A__B__A___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1432685TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1432941w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v1 %v5; %v7 := op:andB: Bitvec ww %v6; %v8 := pair:%v7 %v4; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1432685TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1434708w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v1 %v5; %v7 := op:andB: Bitvec ww %v6; %v8 := pair:%v4 %v5; %v9 := op:orw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id) id ā eval (Op.or w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2123 (A & (~B)) | (A ^ B) -> (A ^ B) -- precondition: true /- %negB = xor %B, -1 %op0 = and %A, %negB %op1 = xor %A, %B %r = or %op0, %op1 => %negB = xor %B, -1 %op0 = and %A, %negB %op1 = xor %A, %B %r = xor %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_2123___A__B__A__B___A__B : forall (alive_AndOrXor_2123___A__B__A__B___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1467197TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1467453w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v4; %v7 := op:andA: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:xorw: āw %v8; %v10 := pair:%v7 %v9; %v11 := op:orw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1467197TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1469589w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v4; %v7 := op:andA: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:xorw: āw %v8; %v10 := pair:%v5 %v1; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id) id, eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id) id ā eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:2188 -- precondition: true /- %C = xor %D, -1 %B = xor %A, -1 %op0 = and %A, %C %op1 = and %B, %D %r = or %op0, %op1 => %C = xor %D, -1 %B = xor %A, -1 %op0 = and %A, %C %op1 = and %B, %D %r = xor %A, %D -/ theoremGoals accomplished! šalive_AndOrXor_2188 : forall (alive_AndOrXor_2188: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A D : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wD : BitvecD: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1506726TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āD) %v0; %v2 := op:const (-D: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1506982w %v3; %v5 := op:const (w: āA) %v0; %v6 := op:const (-A: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1507670w %v7; %v9 := pair:%v5 %v4; %v10 := op:andw: āw %v9; %v11 := pair:%v8 %v1; %v12 := op:andw: āw %v11; %v13 := pair:%v10 %v12; %v14 := op:orw: āw %v13 dsl_ret %v14 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1506726TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āD) %v0; %v2 := op:const (-D: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1509653w %v3; %v5 := op:const (w: āA) %v0; %v6 := op:const (-A: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1510346w %v7; %v9 := pair:%v5 %v4; %v10 := op:andw: āw %v9; %v11 := pair:%v8 %v1; %v12 := op:andw: āw %v11; %v13 := pair:%v5 %v1; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] :=w: āGoals accomplished! šā (w : ā) (A D : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (A D : Bitvec w), eval (Op.or w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.const D) () id, eval (Op.const (-1)) () id) id) id, eval (Op.and w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const D) () id) id) id ā eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const D) () id) idā (w : ā) (A D : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (A D : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const D) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e-- Name:AndOrXor:2231 (A ^ B) | ((B ^ C) ^ A) -> (A ^ B) | C -- precondition: true /- %op0 = xor %A, %B %x = xor %B, %C %op1 = xor %x, %A %r = or %op0, %op1 => %op0 = xor %A, %B %x = xor %B, %C %op1 = xor %x, %A %r = or %op0, %C -/ theoremGoals accomplished! šalive_AndOrXor_2231__A__B__B__C__A___A__B__C : forall (alive_AndOrXor_2231__A__B__B__C__A___A__B__C: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wCC: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1556874TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v2 %v5; %v7 := op:xorC: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:orw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1556874TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v2 %v5; %v7 := op:xorC: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v5; %v11 := op:orw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A C B : Bitvec w), eval (Op.or w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const C) () id) id, eval (Op.const A) () id) id) id ā eval (Op.or w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const C) () id) idā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:2243 ((B | C) & A) | B -> B | (A & C) -- precondition: true /- %o = or %B, %C %op0 = and %o, %A %r = or %op0, %B => %a = and %A, %C %o = or %B, %C %op0 = and %o, %A %r = or %B, %a -/ theoremGoals accomplished! šalive_AndOrXor_2243__B__C__A__B___B__A__C : forall (alive_AndOrXor_2243__B__C__A__B___B__A__C: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wCC: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1604397TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (B: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:orC: Bitvec ww %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v4 %v5; %v7 := op:andA: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1604397TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:andC: Bitvec ww %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v5 %v2; %v7 := op:orB: Bitvec ww %v6; %v8 := pair:%v7 %v1; %v9 := op:andw: āw %v8; %v10 := pair:%v5 %v4; %v11 := op:orw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A C B : Bitvec w), eval (Op.or w) (eval (Op.and w) (eval (Op.or w) (eval (Op.const B) () id, eval (Op.const C) () id) id, eval (Op.const A) () id) id, eval (Op.const B) () id) id ā eval (Op.or w) (eval (Op.const B) () id, eval (Op.and w) (eval (Op.const A) () id, eval (Op.const C) () id) id) idā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A C B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:2247 (~A | ~B) == (~(A & B)) -- precondition: true /- %na = xor %A, -1 %nb = xor %B, -1 %r = or %na, %nb => %a = and %A, %B %na = xor %A, -1 %nb = xor %B, -1 %r = xor %a, -1 -/ theoremGoals accomplished! šalive_AndOrXor_2247__A__B__A__B : forall (alive_AndOrXor_2247__A__B__A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1651038TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1651294w %v3; %v5 := op:const (w: āB) %v0; %v6 := op:const (-B: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1651982w %v7; %v9 := pair:%v4 %v8; %v10 := op:orw: āw %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1651038TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xor1: ?m.1653687w %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v2 %v8; %v10 := op:xor1: ?m.1654249w %v9; %v11 := op:const (-w: ā1) %v0; %v12 := pair:%v4 %v11; %v13 := op:xor1: ?m.1654839w %v12 dsl_ret %v13 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id) id ā eval (Op.xor w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const (-1)) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))) TSSA.rgn0) (TSSA.assign 12 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 13 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))) e-- Name:AndOrXor:2263 -- precondition: true /- %op1 = xor %op0, %B %r = or %op0, %op1 => %op1 = xor %op0, %B %r = or %op0, %B -/ theoremGoals accomplished! šalive_AndOrXor_2263 : forall (alive_AndOrXor_2263: ā {c : Context BaseType} {e : EnvC c} (w : ā) (B op0 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) ew :w: āNat) (Nat: TypeBB: Bitvec wop0 : Bitvecop0: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1692701TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āop0) %v0; %v2 := op:const (op0: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := pair:%v1 %v4; %v6 := op:orw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1692701TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āop0) %v0; %v2 := op:const (op0: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:orw: āw %v5 dsl_ret %v6 ] :=w: āGoals accomplished! šā (w : ā) (B op0 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) eā (w : ā) (B op0 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) eā (w : ā) (B op0 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e-- Name:AndOrXor:2264 -- precondition: true /- %na = xor %A, -1 %op1 = xor %na, %B %r = or %A, %op1 => %nb = xor %B, -1 %na = xor %A, -1 %op1 = xor %na, %B %r = or %A, %nb -/ theoremGoals accomplished! šalive_AndOrXor_2264 : forall (alive_AndOrXor_2264: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1715412TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1715668w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v4 %v5; %v7 := op:xorB: Bitvec ww %v6; %v8 := pair:%v1 %v7; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1715412TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1717435w %v3; %v5 := op:const (w: āA) %v0; %v6 := op:const (-A: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1718148w %v7; %v9 := pair:%v8 %v1; %v10 := op:xorw: āw %v9; %v11 := pair:%v5 %v4; %v12 := op:orw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const B) () id) id) id ā eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2265 -- precondition: true /- %op0 = and %A, %B %op1 = xor %A, %B %r = or %op0, %op1 => %op0 = and %A, %B %op1 = xor %A, %B %r = or %A, %B -/ theoremGoals accomplished! šalive_AndOrXor_2265 : forall (alive_AndOrXor_2265: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1756950TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:orw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1756950TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:orw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:2284 -- precondition: true /- %o = or %A, %B %op1 = xor %o, -1 %r = or %A, %op1 => %not = xor %B, -1 %o = or %A, %B %op1 = xor %o, -1 %r = or %A, %not -/ theoremGoals accomplished! šalive_AndOrXor_2284 : forall (alive_AndOrXor_2284: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1783238TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:orB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.1783994w %v6; %v8 := pair:%v1 %v7; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1783238TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1785261w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v1; %v7 := op:orA: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v7 %v8; %v10 := op:xor1: ?m.1786343w %v9; %v11 := pair:%v5 %v4; %v12 := op:orw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.or w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const (-1)) () id) id) id ā eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2285 -- precondition: true /- %o = xor %A, %B %op1 = xor %o, -1 %r = or %A, %op1 => %not = xor %B, -1 %o = xor %A, %B %op1 = xor %o, -1 %r = or %A, %not -/ theoremGoals accomplished! šalive_AndOrXor_2285 : forall (alive_AndOrXor_2285: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1825988TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.1826744w %v6; %v8 := pair:%v1 %v7; %v9 := op:orw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1825988TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āB) %v0; %v2 := op:const (-B: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1828011w %v3; %v5 := op:const (w: āA) %v0; %v6 := pair:%v5 %v1; %v7 := op:xorA: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v7 %v8; %v10 := op:xor1: ?m.1829093w %v9; %v11 := pair:%v5 %v4; %v12 := op:orw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.const (-1)) () id) id) id ā eval (Op.or w) (eval (Op.const A) () id, eval (Op.xor w) (eval (Op.const B) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const A) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2297 -- precondition: true /- %op0 = and %A, %B %na = xor %A, -1 %op1 = xor %na, %B %r = or %op0, %op1 => %na = xor %A, -1 %op0 = and %A, %B %op1 = xor %na, %B %r = xor %na, %B -/ theoremGoals accomplished! šalive_AndOrXor_2297 : forall (alive_AndOrXor_2297: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wB : BitvecB: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1869128TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wB) %v0; %v3 := pair:%v1 %v2; %v4 := op:andB: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v1 %v5; %v7 := op:xor1: ?m.1869884w %v6; %v8 := pair:%v7 %v2; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:orw: āw %v10 dsl_ret %v11 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1869128TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (-A: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1871535w %v3; %v5 := op:const (w: āB) %v0; %v6 := pair:%v1 %v5; %v7 := op:andB: Bitvec ww %v6; %v8 := pair:%v4 %v5; %v9 := op:xorw: āw %v8; %v10 := pair:%v4 %v5; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), eval (Op.or w) (eval (Op.and w) (eval (Op.const A) () id, eval (Op.const B) () id) id, eval (Op.xor w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const B) () id) id) id ā eval (Op.xor w) (eval (Op.xor w) (eval (Op.const A) () id, eval (Op.const (-1)) () id) id, eval (Op.const B) () id) idā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (A B : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const B) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const B) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:AndOrXor:2367 -- precondition: true /- %op0 = or %A, C1 %r = or %op0, %op1 => %i = or %A, %op1 %op0 = or %A, C1 %r = or %i, C1 -/ theoremGoals accomplished! šalive_AndOrXor_2367 : forall (alive_AndOrXor_2367: ā {c : Context BaseType} {e : EnvC c} (w : ā) (A C1 op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeAA: Bitvec wC1C1: Bitvec wop1 : Bitvecop1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1908866TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:orC1: Bitvec ww %v3; %v5 := op:const (w: āop1) %v0; %v6 := pair:%v4 %v5; %v7 := op:orop1: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1908866TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āA) %v0; %v2 := op:const (A: Bitvec wop1) %v0; %v3 := pair:%v1 %v2; %v4 := op:orop1: Bitvec ww %v3; %v5 := op:const (w: āC1) %v0; %v6 := pair:%v1 %v5; %v7 := op:orC1: Bitvec ww %v6; %v8 := pair:%v4 %v5; %v9 := op:orw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (A C1 op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A C1 op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (A C1 op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const A) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2416 -- precondition: true /- %x = xor %nx, -1 %op0 = and %x, %y %r = xor %op0, -1 => %ny = xor %y, -1 %x = xor %nx, -1 %op0 = and %x, %y %r = or %nx, %ny -/ theoremGoals accomplished! šalive_AndOrXor_2416 : forall (alive_AndOrXor_2416: ā {c : Context BaseType} {e : EnvC c} (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: Typenxnx: Bitvec wy : Bitvecy: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1946813TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ānx) %v0; %v2 := op:const (-nx: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1947069w %v3; %v5 := op:const (w: āy) %v0; %v6 := pair:%v4 %v5; %v7 := op:andy: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v7 %v8; %v10 := op:xor1: ?m.1948111w %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1946813TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āy) %v0; %v2 := op:const (-y: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1949037w %v3; %v5 := op:const (w: ānx) %v0; %v6 := op:const (-nx: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1949730w %v7; %v9 := pair:%v8 %v1; %v10 := op:andw: āw %v9; %v11 := pair:%v5 %v4; %v12 := op:orw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (nx y : Bitvec w), eval (Op.xor w) (eval (Op.and w) (eval (Op.xor w) (eval (Op.const nx) () id, eval (Op.const (-1)) () id) id, eval (Op.const y) () id) id, eval (Op.const (-1)) () id) id ā eval (Op.or w) (eval (Op.const nx) () id, eval (Op.xor w) (eval (Op.const y) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2417 -- precondition: true /- %x = xor %nx, -1 %op0 = or %x, %y %r = xor %op0, -1 => %ny = xor %y, -1 %x = xor %nx, -1 %op0 = or %x, %y %r = and %nx, %ny -/ theoremGoals accomplished! šalive_AndOrXor_2417 : forall (alive_AndOrXor_2417: ā {c : Context BaseType} {e : EnvC c} (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: Typenxnx: Bitvec wy : Bitvecy: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1989181TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ānx) %v0; %v2 := op:const (-nx: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1989437w %v3; %v5 := op:const (w: āy) %v0; %v6 := pair:%v4 %v5; %v7 := op:ory: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v7 %v8; %v10 := op:xor1: ?m.1990479w %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.1989181TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āy) %v0; %v2 := op:const (-y: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.1991405w %v3; %v5 := op:const (w: ānx) %v0; %v6 := op:const (-nx: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.1992098w %v7; %v9 := pair:%v8 %v1; %v10 := op:orw: āw %v9; %v11 := pair:%v5 %v4; %v12 := op:andw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (nx y : Bitvec w), eval (Op.xor w) (eval (Op.or w) (eval (Op.xor w) (eval (Op.const nx) () id, eval (Op.const (-1)) () id) id, eval (Op.const y) () id) id, eval (Op.const (-1)) () id) id ā eval (Op.and w) (eval (Op.const nx) () id, eval (Op.xor w) (eval (Op.const y) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (nx y : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const nx) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const nx) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2429 -- precondition: true /- %op0 = and %x, %y %r = xor %op0, -1 => %nx = xor %x, -1 %ny = xor %y, -1 %op0 = and %x, %y %r = or %nx, %ny -/ theoremGoals accomplished! šalive_AndOrXor_2429 : forall (alive_AndOrXor_2429: ā {c : Context BaseType} {e : EnvC c} (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: Typeyy: Bitvec wx : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2030958TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wy) %v0; %v3 := pair:%v1 %v2; %v4 := op:andy: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.2031714w %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2030958TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2032602w %v3; %v5 := op:const (w: āy) %v0; %v6 := op:const (-y: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2033315w %v7; %v9 := pair:%v1 %v5; %v10 := op:andw: āw %v9; %v11 := pair:%v4 %v8; %v12 := op:orw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (y x : Bitvec w), eval (Op.xor w) (eval (Op.and w) (eval (Op.const x) () id, eval (Op.const y) () id) id, eval (Op.const (-1)) () id) id ā eval (Op.or w) (eval (Op.xor w) (eval (Op.const x) () id, eval (Op.const (-1)) () id) id, eval (Op.xor w) (eval (Op.const y) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2430 -- precondition: true /- %op0 = or %x, %y %r = xor %op0, -1 => %nx = xor %x, -1 %ny = xor %y, -1 %op0 = or %x, %y %r = and %nx, %ny -/ theoremGoals accomplished! šalive_AndOrXor_2430 : forall (alive_AndOrXor_2430: ā {c : Context BaseType} {e : EnvC c} (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) ew :w: āNat) (Nat: Typeyy: Bitvec wx : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2071774TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wy) %v0; %v3 := pair:%v1 %v2; %v4 := op:ory: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.2072530w %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2071774TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2073418w %v3; %v5 := op:const (w: āy) %v0; %v6 := op:const (-y: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2074131w %v7; %v9 := pair:%v1 %v5; %v10 := op:orw: āw %v9; %v11 := pair:%v4 %v8; %v12 := op:andw: āw %v11 dsl_ret %v12 ] :=w: āGoals accomplished! šā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (y x : Bitvec w), eval (Op.xor w) (eval (Op.or w) (eval (Op.const x) () id, eval (Op.const y) () id) id, eval (Op.const (-1)) () id) id ā eval (Op.and w) (eval (Op.xor w) (eval (Op.const x) () id, eval (Op.const (-1)) () id) id, eval (Op.xor w) (eval (Op.const y) () id, eval (Op.const (-1)) () id) id) idā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e-- Name:AndOrXor:2443 -- precondition: true /- %nx = xor %x, -1 %op0 = ashr %nx, %y %r = xor %op0, -1 => %nx = xor %x, -1 %op0 = ashr %nx, %y %r = ashr %x, %y -/ theoremGoals accomplished! šalive_AndOrXor_2443 : forall (alive_AndOrXor_2443: ā {c : Context BaseType} {e : EnvC c} (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: Typeyy: Bitvec wx : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2113181TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2113437w %v3; %v5 := op:const (w: āy) %v0; %v6 := pair:%v4 %v5; %v7 := op:ashry: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v7 %v8; %v10 := op:xor1: ?m.2114479w %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2113181TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2115405w %v3; %v5 := op:const (w: āy) %v0; %v6 := pair:%v4 %v5; %v7 := op:ashry: Bitvec ww %v6; %v8 := pair:%v1 %v5; %v9 := op:ashrw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.ashr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2453 -- precondition: true /- %op0 = icmp slt %x, %y %r = xor %op0, -1 => %op0 = icmp slt %x, %y %r = icmp sge %x, %y -/ theoremGoals accomplished! šalive_AndOrXor_2453 : forall (alive_AndOrXor_2453: ā {c : Context BaseType} {e : EnvC c} (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.sge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) ew :w: āNat) (Nat: Typeyy: Bitvec wx : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2148252TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2148271x) %v0; %v2 := op:const (x: Bitvec wy) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp slty: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.21490111 %v6 dsl_ret %v7 ] ā1: ?m.2149251TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2148252TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2149666x) %v0; %v2 := op:const (x: Bitvec wy) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp slty: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp sgew: āw %v5 dsl_ret %v6 ] :=w: āGoals accomplished! šā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.sge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.sge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) eā (w : ā) (y x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.slt w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.sge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e-- Name:AndOrXor:2475 -- precondition: true /- %op0 = sub C, %x %r = xor %op0, -1 => %op0 = sub C, %x %r = add %x, (-1 - C) -/ theoremGoals accomplished! šalive_AndOrXor_2475 : forall (alive_AndOrXor_2475: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2171205TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āC) %v0; %v2 := op:const (C: Bitvec wx) %v0; %v3 := pair:%v1 %v2; %v4 := op:subx: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.2171961w %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2171205TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āC) %v0; %v2 := op:const (C: Bitvec wx) %v0; %v3 := pair:%v1 %v2; %v4 := op:subx: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v5 %v1; %v7 := op:sub1: ?m.2173349w %v6; %v8 := pair:%v2 %v7; %v9 := op:addw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2486 -- precondition: true /- %op0 = add %x, C %r = xor %op0, -1 => %op0 = add %x, C %r = sub (-1 - C), %x -/ theoremGoals accomplished! šalive_AndOrXor_2486 : forall (alive_AndOrXor_2486: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: Typexx: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2205462TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v4 %v5; %v7 := op:xor1: ?m.2206218w %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2205462TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (x: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v5 %v2; %v7 := op:sub1: ?m.2207606w %v6; %v8 := pair:%v7 %v1; %v9 := op:subw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (x C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2581 (B|A)^B -> A & ~B -- precondition: true /- %op0 = or %a, %op1 %r = xor %op0, %op1 => %nop1 = xor %op1, -1 %op0 = or %a, %op1 %r = and %a, %nop1 -/ theoremGoals accomplished! šalive_AndOrXor_2581__BAB___A__B : forall (alive_AndOrXor_2581__BAB___A__B: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wop1 : Bitvecop1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2239527TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wop1) %v0; %v3 := pair:%v1 %v2; %v4 := op:orop1: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:xorw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2239527TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āop1) %v0; %v2 := op:const (-op1: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2240988w %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v1; %v7 := op:ora: Bitvec ww %v6; %v8 := pair:%v5 %v4; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const op1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2587 (B&A)^A -> ~B & A -- precondition: true /- %op0 = and %a, %op1 %r = xor %op0, %op1 => %na = xor %a, -1 %op0 = and %a, %op1 %r = and %na, %op1 -/ theoremGoals accomplished! šalive_AndOrXor_2587__BAA___B__A : forall (alive_AndOrXor_2587__BAA___B__A: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wop1 : Bitvecop1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2273619TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wop1) %v0; %v3 := pair:%v1 %v2; %v4 := op:andop1: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:xorw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2273619TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2275080w %v3; %v5 := op:const (w: āop1) %v0; %v6 := pair:%v1 %v5; %v7 := op:andop1: Bitvec ww %v6; %v8 := pair:%v4 %v5; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (a op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:AndOrXor:2595 -- precondition: true /- %op0 = and %a, %b %op1 = or %a, %b %r = xor %op0, %op1 => %op0 = and %a, %b %op1 = or %a, %b %r = xor %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_2595 : forall (alive_AndOrXor_2595: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2306881TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:orw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:xorw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2306881TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:orw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:xorw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:2607 -- precondition: true /- %na = xor %a, -1 %nb = xor %b, -1 %op0 = or %a, %nb %op1 = or %na, %b %r = xor %op0, %op1 => %na = xor %a, -1 %nb = xor %b, -1 %op0 = or %a, %nb %op1 = or %na, %b %r = xor %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_2607 : forall (alive_AndOrXor_2607: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2334090TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2334346w %v3; %v5 := op:const (w: āb) %v0; %v6 := op:const (-b: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2335034w %v7; %v9 := pair:%v1 %v8; %v10 := op:orw: āw %v9; %v11 := pair:%v4 %v5; %v12 := op:orw: āw %v11; %v13 := pair:%v10 %v12; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2334090TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2337017w %v3; %v5 := op:const (w: āb) %v0; %v6 := op:const (-b: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2337710w %v7; %v9 := pair:%v1 %v8; %v10 := op:orw: āw %v9; %v11 := pair:%v4 %v5; %v12 := op:orw: āw %v11; %v13 := pair:%v1 %v5; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.xor w) (eval (Op.or w) (eval (Op.const a) () id, eval (Op.xor w) (eval (Op.const b) () id, eval (Op.const (-1)) () id) id) id, eval (Op.or w) (eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const (-1)) () id) id, eval (Op.const b) () id) id) id ā eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const b) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e-- Name:AndOrXor:2617 -- precondition: true /- %na = xor %a, -1 %nb = xor %b, -1 %op0 = and %a, %nb %op1 = and %na, %b %r = xor %op0, %op1 => %na = xor %a, -1 %nb = xor %b, -1 %op0 = and %a, %nb %op1 = and %na, %b %r = xor %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_2617 : forall (alive_AndOrXor_2617: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2384795TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2385051w %v3; %v5 := op:const (w: āb) %v0; %v6 := op:const (-b: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2385739w %v7; %v9 := pair:%v1 %v8; %v10 := op:andw: āw %v9; %v11 := pair:%v4 %v5; %v12 := op:andw: āw %v11; %v13 := pair:%v10 %v12; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2384795TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2387722w %v3; %v5 := op:const (w: āb) %v0; %v6 := op:const (-b: Bitvec w1) %v0; %v7 := pair:%v5 %v6; %v8 := op:xor1: ?m.2388415w %v7; %v9 := pair:%v1 %v8; %v10 := op:andw: āw %v9; %v11 := pair:%v4 %v5; %v12 := op:andw: āw %v11; %v13 := pair:%v1 %v5; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.xor w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.xor w) (eval (Op.const b) () id, eval (Op.const (-1)) () id) id) id, eval (Op.and w) (eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const (-1)) () id) id, eval (Op.const b) () id) id) id ā eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const b) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e-- Name:AndOrXor:2627 -- precondition: true /- %op0 = xor %a, %c %op1 = or %a, %b %r = xor %op0, %op1 => %na = xor %a, -1 %and = and %na, %b %op0 = xor %a, %c %op1 = or %a, %b %r = xor %and, %c -/ theoremGoals accomplished! šalive_AndOrXor_2627 : forall (alive_AndOrXor_2627: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a c_1 b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const c_1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const c_1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wcc: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2434548TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wc) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorc: Bitvec ww %v3; %v5 := op:const (w: āb) %v0; %v6 := pair:%v1 %v5; %v7 := op:orb: Bitvec ww %v6; %v8 := pair:%v4 %v7; %v9 := op:xorw: āw %v8 dsl_ret %v9 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2434548TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (-a: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2436546w %v3; %v5 := op:const (w: āb) %v0; %v6 := pair:%v4 %v5; %v7 := op:andb: Bitvec ww %v6; %v8 := op:const (w: āc) %v0; %v9 := pair:%v1 %v8; %v10 := op:xorc: Bitvec ww %v9; %v11 := pair:%v1 %v5; %v12 := op:orw: āw %v11; %v13 := pair:%v7 %v8; %v14 := op:xorw: āw %v13 dsl_ret %v14 ] :=w: āGoals accomplished! šā (w : ā) (a c b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const c) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const c) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a c b : Bitvec w), eval (Op.xor w) (eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const c) () id) id, eval (Op.or w) (eval (Op.const a) () id, eval (Op.const b) () id) id) id ā eval (Op.xor w) (eval (Op.and w) (eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const (-1)) () id) id, eval (Op.const b) () id) id, eval (Op.const c) () id) idā (w : ā) (a c b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const c) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const c) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) eā (w : ā) (a c b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const c) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const b) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const c) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 12 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 14 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))) e-- Name:AndOrXor:2647 -- precondition: true /- %op0 = and %a, %b %op1 = xor %a, %b %r = xor %op0, %op1 => %op0 = and %a, %b %op1 = xor %a, %b %r = or %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_2647 : forall (alive_AndOrXor_2647: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2487376TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:xorw: āw %v7 dsl_ret %v8 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2487376TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:xorw: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:orw: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:AndOrXor:2658 -- precondition: true /- %nb = xor %b, -1 %op0 = and %a, %nb %na = xor %a, -1 %r = xor %op0, %na => %and = and %a, %b %nb = xor %b, -1 %op0 = and %a, %nb %na = xor %a, -1 %r = xor %and, -1 -/ theoremGoals accomplished! šalive_AndOrXor_2658 : forall (alive_AndOrXor_2658: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2514250TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āb) %v0; %v2 := op:const (-b: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:xor1: ?m.2514506w %v3; %v5 := op:const (w: āa) %v0; %v6 := pair:%v5 %v4; %v7 := op:anda: Bitvec ww %v6; %v8 := op:const (-w: ā1) %v0; %v9 := pair:%v5 %v8; %v10 := op:xor1: ?m.2515548w %v9; %v11 := pair:%v7 %v10; %v12 := op:xorw: āw %v11 dsl_ret %v12 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2514250TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āa) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v2 %v5; %v7 := op:xor1: ?m.2517348w %v6; %v8 := pair:%v1 %v7; %v9 := op:andw: āw %v8; %v10 := op:const (-w: ā1) %v0; %v11 := pair:%v1 %v10; %v12 := op:xor1: ?m.2518284w %v11; %v13 := op:const (-w: ā1) %v0; %v14 := pair:%v4 %v13; %v15 := op:xor1: ?m.2518899w %v14 dsl_ret %v15 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.xor w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.xor w) (eval (Op.const b) () id, eval (Op.const (-1)) () id) id) id, eval (Op.xor w) (eval (Op.const a) () id, eval (Op.const (-1)) () id) id) id ā eval (Op.xor w) (eval (Op.and w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.const (-1)) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const b) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const a) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 12 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))) TSSA.rgn0) (TSSA.assign 14 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) Context.Var.last) (TSSA.assign 15 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))))))) e-- Name:AndOrXor:2663 -- precondition: true /- %op0 = icmp ule %a, %b %op1 = icmp ne %a, %b %r = xor %op0, %op1 => %op0 = icmp ule %a, %b %op1 = icmp ne %a, %b %r = icmp uge %a, %b -/ theoremGoals accomplished! šalive_AndOrXor_2663 : forall (alive_AndOrXor_2663: ā {c : Context BaseType} {e : EnvC c} (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) ew :w: āNat) (Nat: Typeaa: Bitvec wb : Bitvecb: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2564004TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2564023a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp uleb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v4 %v6; %v8 := op:xorw: ā1 %v7 dsl_ret %v8 ] ā1: ?m.2565194TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2564004TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2565609a) %v0; %v2 := op:const (a: Bitvec wb) %v0; %v3 := pair:%v1 %v2; %v4 := op:icmp uleb: Bitvec ww %v3; %v5 := pair:%v1 %v2; %v6 := op:icmp new: āw %v5; %v7 := pair:%v1 %v2; %v8 := op:icmp ugew: āw %v7 dsl_ret %v8 ] :=w: āGoals accomplished! šā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), eval (Op.xor 1) (eval (Op.icmp Comparison.ule w) (eval (Op.const a) () id, eval (Op.const b) () id) id, eval (Op.icmp Comparison.ne w) (eval (Op.const a) () id, eval (Op.const b) () id) id) id ā eval (Op.icmp Comparison.uge w) (eval (Op.const a) () id, eval (Op.const b) () id) idā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (w : ā) (a b : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.icmp Comparison.ule w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.icmp Comparison.ne w) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.icmp Comparison.uge w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:152 -- precondition: true /- %r = mul %x, -1 => %r = sub 0, %x -/ theoremGoals accomplished! šalive_152 : forall (alive_152: ā {c : Context BaseType} {e : EnvC c} (w : ā) (x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) ew :w: āNat) (Nat: Typex : Bitvecx: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2589522TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āx) %v0; %v2 := op:const (-x: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:mul1: ?m.2589776w %v3 dsl_ret %v4 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2589522TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.2590507x) %v0; %v3 := pair:%v1 %v2; %v4 := op:subx: Bitvec ww %v3 dsl_ret %v4 ] :=w: āGoals accomplished! šā (w : ā) (x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (x : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const x) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:160 -- precondition: true /- %sh = shl i7 %x, C2 %r = mul %sh, C1 => %sh = shl i7 %x, C2 %r = mul %x, (C1 << C2) -/ theoremGoals accomplished! šalive_160: forall (alive_160: ā {c : Context BaseType} {e : EnvC c} (x C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) exx: Bitvec 7C1C1: Bitvec 7C2 : BitvecC2: Bitvec 77) ,7: ?m.2606798TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2606783TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β7))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (7: ?m.2606811x) %v0; %v2 := op:const (x: Bitvec 7C2) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC2: Bitvec 77 %v3; %v5 := op:const (7: ?m.2607249C1) %v0; %v6 := pair:%v4 %v5; %v7 := op:mulC1: Bitvec 77 %v6 dsl_ret %v7 ] ā7: ?m.2607767TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2606783TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β7))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (7: ?m.2608182x) %v0; %v2 := op:const (x: Bitvec 7C2) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC2: Bitvec 77 %v3; %v5 := op:const (7: ?m.2608619C1) %v0; %v6 := pair:%v5 %v2; %v7 := op:shlC1: Bitvec 77 %v6; %v8 := pair:%v1 %v7; %v9 := op:mul7: ?m.26091477 %v8 dsl_ret %v9 ] :=7: ?m.2609535Goals accomplished! šā (x C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (x C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (x C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const x) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:229 -- precondition: true /- %Op0 = add %X, C1 %r = mul %Op0, %Op1 => %mul = mul C1, %Op1 %tmp = mul %X, %Op1 %Op0 = add %X, C1 %r = add %tmp, %mul -/ theoremGoals accomplished! šalive_229 : forall (alive_229: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C1 Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC1C1: Bitvec wOp1 : BitvecOp1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2640855TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC1) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC1: Bitvec ww %v3; %v5 := op:const (w: āOp1) %v0; %v6 := pair:%v4 %v5; %v7 := op:mulOp1: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2640855TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āC1) %v0; %v2 := op:const (C1: Bitvec wOp1) %v0; %v3 := pair:%v1 %v2; %v4 := op:mulOp1: Bitvec ww %v3; %v5 := op:const (w: āX) %v0; %v6 := pair:%v5 %v2; %v7 := op:mulX: Bitvec ww %v6; %v8 := pair:%v5 %v1; %v9 := op:addw: āw %v8; %v10 := pair:%v7 %v4; %v11 := op:addw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (X C1 Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 Op1 : Bitvec w), eval (Op.mul w) (eval (Op.add w) (eval (Op.const X) () id, eval (Op.const C1) () id) id, eval (Op.const Op1) () id) id ā eval (Op.add w) (eval (Op.mul w) (eval (Op.const X) () id, eval (Op.const Op1) () id) id, eval (Op.mul w) (eval (Op.const C1) () id, eval (Op.const Op1) () id) id) idā (w : ā) (X C1 Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C1 Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 9 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:239 -- precondition: true /- %a = sub 0, %X %b = sub 0, %Y %r = mul %a, %b => %a = sub 0, %X %b = sub 0, %Y %r = mul %X, %Y -/ theoremGoals accomplished! šalive_239 : forall (alive_239: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2686834TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.2686948X) %v0; %v3 := pair:%v1 %v2; %v4 := op:subX: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := op:const (0: ?m.2687610Y) %v0; %v7 := pair:%v5 %v6; %v8 := op:subY: Bitvec ww %v7; %v9 := pair:%v4 %v8; %v10 := op:mulw: āw %v9 dsl_ret %v10 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2686834TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.2688806X) %v0; %v3 := pair:%v1 %v2; %v4 := op:subX: Bitvec ww %v3; %v5 := op:const (w: ā0) %v0; %v6 := op:const (0: ?m.2689468Y) %v0; %v7 := pair:%v5 %v6; %v8 := op:subY: Bitvec ww %v7; %v9 := pair:%v2 %v6; %v10 := op:mulw: āw %v9 dsl_ret %v10 ] :=w: āGoals accomplished! šā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 8 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 10 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))) e-- Name:275 -- precondition: true /- %div = udiv i5 %X, %Y %r = mul %div, %Y => %rem = urem %X, %Y %div = udiv i5 %X, %Y %r = sub %X, %rem -/ theoremGoals accomplished! šalive_275: forall (alive_275: ā {c : Context BaseType} {e : EnvC c} (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eYY: Bitvec 5X : BitvecX: Bitvec 55) ,5: ?m.2720798TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2720788TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2720811X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:udivY: Bitvec 55 %v3; %v5 := pair:%v4 %v2; %v6 := op:mul5: ?m.27212495 %v5 dsl_ret %v6 ] ā5: ?m.2721611TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2720788TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2722026X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:uremY: Bitvec 55 %v3; %v5 := pair:%v1 %v2; %v6 := op:udiv5: ?m.27224635 %v5; %v7 := pair:%v1 %v4; %v8 := op:sub5: ?m.27228405 %v7 dsl_ret %v8 ] :=5: ?m.2723233Goals accomplished! šā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:275-2 -- precondition: true /- %div = sdiv i5 %X, %Y %r = mul %div, %Y => %rem = srem %X, %Y %div = sdiv i5 %X, %Y %r = sub %X, %rem -/ theoremGoals accomplished! šalive_275_2: forall (alive_275_2: ā {c : Context BaseType} {e : EnvC c} (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eYY: Bitvec 5X : BitvecX: Bitvec 55) ,5: ?m.2746909TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2746899TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2746922X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:sdivY: Bitvec 55 %v3; %v5 := pair:%v4 %v2; %v6 := op:mul5: ?m.27473605 %v5 dsl_ret %v6 ] ā5: ?m.2747722TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2746899TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2748137X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:sremY: Bitvec 55 %v3; %v5 := pair:%v1 %v2; %v6 := op:sdiv5: ?m.27485745 %v5; %v7 := pair:%v1 %v4; %v8 := op:sub5: ?m.27489515 %v7 dsl_ret %v8 ] :=5: ?m.2749344Goals accomplished! šā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 8 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:276 -- precondition: true /- %div = sdiv i5 %X, %Y %negY = sub 0, %Y %r = mul %div, %negY => %rem = srem %X, %Y %div = sdiv i5 %X, %Y %negY = sub 0, %Y %r = sub %rem, %X -/ theoremGoals accomplished! šalive_276: forall (alive_276: ā {c : Context BaseType} {e : EnvC c} (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eYY: Bitvec 5X : BitvecX: Bitvec 55) ,5: ?m.2773589TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2773579TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2773602X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:sdivY: Bitvec 55 %v3; %v5 := op:const (5: ?m.27740400) %v0; %v6 := pair:%v5 %v2; %v7 := op:sub0: ?m.27743445 %v6; %v8 := pair:%v4 %v7; %v9 := op:mul5: ?m.27745895 %v8 dsl_ret %v9 ] ā5: ?m.2774956TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2773579TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2775371X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:sremY: Bitvec 55 %v3; %v5 := pair:%v1 %v2; %v6 := op:sdiv5: ?m.27758085 %v5; %v7 := op:const (5: ?m.27761850) %v0; %v8 := pair:%v7 %v2; %v9 := op:sub0: ?m.27764895 %v8; %v10 := pair:%v4 %v1; %v11 := op:sub5: ?m.27767545 %v10 dsl_ret %v11 ] :=5: ?m.2777177Goals accomplished! šā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (Y X : Bitvec 5), eval (Op.mul 5) (eval (Op.sdiv 5) (eval (Op.const X) () id, eval (Op.const Y) () id) id, eval (Op.sub 5) (eval (Op.const 0) () id, eval (Op.const Y) () id) id) id ā eval (Op.sub 5) (eval (Op.urem 5) (eval (Op.const X) () id, eval (Op.const Y) () id) id, eval (Op.const X) () id) idā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.sdiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:276-2 -- precondition: true /- %div = udiv i5 %X, %Y %negY = sub 0, %Y %r = mul %div, %negY => %rem = urem %X, %Y %div = udiv i5 %X, %Y %negY = sub 0, %Y %r = sub %rem, %X -/ theoremGoals accomplished! šalive_276_2: forall (alive_276_2: ā {c : Context BaseType} {e : EnvC c} (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eYY: Bitvec 5X : BitvecX: Bitvec 55) ,5: ?m.2806451TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2806441TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2806464X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:udivY: Bitvec 55 %v3; %v5 := op:const (5: ?m.28069020) %v0; %v6 := pair:%v5 %v2; %v7 := op:sub0: ?m.28072065 %v6; %v8 := pair:%v4 %v7; %v9 := op:mul5: ?m.28074515 %v8 dsl_ret %v9 ] ā5: ?m.2807818TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2806441TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β5))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (5: ?m.2808233X) %v0; %v2 := op:const (X: Bitvec 5Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:uremY: Bitvec 55 %v3; %v5 := pair:%v1 %v2; %v6 := op:udiv5: ?m.28086705 %v5; %v7 := op:const (5: ?m.28090470) %v0; %v8 := pair:%v7 %v2; %v9 := op:sub0: ?m.28093515 %v8; %v10 := pair:%v4 %v1; %v11 := op:sub5: ?m.28096165 %v10 dsl_ret %v11 ] :=5: ?m.2810039Goals accomplished! šā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (Y X : Bitvec 5), eval (Op.mul 5) (eval (Op.udiv 5) (eval (Op.const X) () id, eval (Op.const Y) () id) id, eval (Op.sub 5) (eval (Op.const 0) () id, eval (Op.const Y) () id) id) id ā eval (Op.sub 5) (eval (Op.urem 5) (eval (Op.const X) () id, eval (Op.const Y) () id) id, eval (Op.const X) () id) idā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (Y X : Bitvec 5), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 5) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.udiv 5) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.op (Op.const 0) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 5) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:283 -- precondition: true /- %r = mul i1 %X, %Y => %r = and %X, %Y -/ theoremGoals accomplished! šalive_283: forall (alive_283: ā {c : Context BaseType} {e : EnvC c} (Y X : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eYY: Bitvec 1X : BitvecX: Bitvec 11) ,1: ?m.2838377TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2838367TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2838390X) %v0; %v2 := op:const (X: Bitvec 1Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:mulY: Bitvec 11 %v3 dsl_ret %v4 ] ā1: ?m.2838828TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2838367TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2839243X) %v0; %v2 := op:const (X: Bitvec 1Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:andY: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.2839680Goals accomplished! šā (Y X : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (Y X : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (Y X : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:290 & 292 -- precondition: true /- %Op0 = shl 1, %Y %r = mul %Op0, %Op1 => %Op0 = shl 1, %Y %r = shl %Op1, %Y -/ theoremGoals accomplished! šalive_290__292 : forall (alive_290__292: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wOp1 : BitvecOp1: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2852075TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā1) %v0; %v2 := op:const (1: ?m.2852189Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlY: Bitvec ww %v3; %v5 := op:const (w: āOp1) %v0; %v6 := pair:%v4 %v5; %v7 := op:mulOp1: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2852075TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā1) %v0; %v2 := op:const (1: ?m.2853571Y) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlY: Bitvec ww %v3; %v5 := op:const (w: āOp1) %v0; %v6 := pair:%v5 %v2; %v7 := op:shlOp1: Bitvec ww %v6 dsl_ret %v7 ] :=w: āGoals accomplished! šā (w : ā) (Y Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (w : ā) (Y Op1 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.mul w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Y) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Op1) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:820 -- precondition: true /- %Z = srem i9 %X, %Op1 %Op0 = sub %X, %Z %r = sdiv %Op0, %Op1 => %Z = srem i9 %X, %Op1 %Op0 = sub %X, %Z %r = sdiv %X, %Op1 -/ theoremGoals accomplished! šalive_820: forall (alive_820: ā {c : Context BaseType} {e : EnvC c} (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eXX: Bitvec 9Op1 : BitvecOp1: Bitvec 99) ,9: ?m.2878344TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2878334TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β9))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (9: ?m.2878357X) %v0; %v2 := op:const (X: Bitvec 9Op1) %v0; %v3 := pair:%v1 %v2; %v4 := op:sremOp1: Bitvec 99 %v3; %v5 := pair:%v1 %v4; %v6 := op:sub9: ?m.28787959 %v5; %v7 := pair:%v6 %v2; %v8 := op:sdiv9: ?m.28791629 %v7 dsl_ret %v8 ] ā9: ?m.2879534TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2878334TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β9))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (9: ?m.2879949X) %v0; %v2 := op:const (X: Bitvec 9Op1) %v0; %v3 := pair:%v1 %v2; %v4 := op:sremOp1: Bitvec 99 %v3; %v5 := pair:%v1 %v4; %v6 := op:sub9: ?m.28803869 %v5; %v7 := pair:%v1 %v2; %v8 := op:sdiv9: ?m.28807539 %v7 dsl_ret %v8 ] :=9: ?m.2881150Goals accomplished! šā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.sdiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:820' -- precondition: true /- %Z = urem i9 %X, %Op1 %Op0 = sub %X, %Z %r = udiv %Op0, %Op1 => %Z = urem i9 %X, %Op1 %Op0 = sub %X, %Z %r = udiv %X, %Op1 -/ theoremGoals accomplished! šalive_820': forall (alive_820': ā {c : Context BaseType} {e : EnvC c} (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eXX: Bitvec 9Op1 : BitvecOp1: Bitvec 99) ,9: ?m.2905306TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2905296TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β9))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (9: ?m.2905319X) %v0; %v2 := op:const (X: Bitvec 9Op1) %v0; %v3 := pair:%v1 %v2; %v4 := op:uremOp1: Bitvec 99 %v3; %v5 := pair:%v1 %v4; %v6 := op:sub9: ?m.29057579 %v5; %v7 := pair:%v6 %v2; %v8 := op:udiv9: ?m.29061249 %v7 dsl_ret %v8 ] ā9: ?m.2906496TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2905296TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β9))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (9: ?m.2906911X) %v0; %v2 := op:const (X: Bitvec 9Op1) %v0; %v3 := pair:%v1 %v2; %v4 := op:uremOp1: Bitvec 99 %v3; %v5 := pair:%v1 %v4; %v6 := op:sub9: ?m.29073489 %v5; %v7 := pair:%v1 %v2; %v8 := op:udiv9: ?m.29077159 %v7 dsl_ret %v8 ] :=9: ?m.2908112Goals accomplished! šā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) eā (X Op1 : Bitvec 9), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const Op1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.urem 9) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 6 (TSSA.op (Op.sub 9) Context.Var.last TSSA.rgn0) (TSSA.assign 7 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.udiv 9) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))) e-- Name:891 -- precondition: true /- %s = shl i13 1, %N %r = udiv %x, %s => %s = shl i13 1, %N %r = lshr %x, %N -/ theoremGoals accomplished! šalive_891: forall (alive_891: ā {c : Context BaseType} {e : EnvC c} (x N : Bitvec 13), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.udiv 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) exx: Bitvec 13N : BitvecN: Bitvec 1313) ,13: ?m.2932071TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2932061TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β13))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (13: ?m.29320841) %v0; %v2 := op:const (1: ?m.2932182N) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlN: Bitvec 1313 %v3; %v5 := op:const (13: ?m.2932543x) %v0; %v6 := pair:%v5 %v4; %v7 := op:udivx: Bitvec 1313 %v6 dsl_ret %v7 ] ā13: ?m.2933061TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2932061TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β13))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (13: ?m.29334761) %v0; %v2 := op:const (1: ?m.2933573N) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlN: Bitvec 1313 %v3; %v5 := op:const (13: ?m.2933934x) %v0; %v6 := pair:%v5 %v2; %v7 := op:lshrx: Bitvec 1313 %v6 dsl_ret %v7 ] :=13: ?m.2934462Goals accomplished! šā (x N : Bitvec 13), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.udiv 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (x N : Bitvec 13), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.udiv 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (x N : Bitvec 13), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.udiv 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const N) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 13) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const x) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr 13) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:1030 -- precondition: true /- %r = sdiv %X, -1 => %r = sub 0, %X -/ theoremGoals accomplished! šalive_1030 : forall (alive_1030: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) ew :w: āNat) (Nat: TypeX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2955547TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (-X: Bitvec w1) %v0; %v3 := pair:%v1 %v2; %v4 := op:sdiv1: ?m.2955801w %v3 dsl_ret %v4 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2955547TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: ā0) %v0; %v2 := op:const (0: ?m.2956532X) %v0; %v3 := pair:%v1 %v2; %v4 := op:subX: Bitvec ww %v3 dsl_ret %v4 ] :=w: āGoals accomplished! šā (w : ā) (X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (w : ā) (X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (-1)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sdiv w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const 0) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.sub w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:Select:846 -- precondition: true /- %A = select i1 %B, true, %C => %A = or %B, %C -/ theoremGoals accomplished! šalive_Select_846: forall (alive_Select_846: ā {c : Context BaseType} {e : EnvC c} (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eCC: Bitvec 1B : BitvecB: Bitvec 11) ,1: ?m.2972543TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2972533TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2972556B) %v0; %v2 := op:const (āB: Bitvec 1true) %v0; %v3 := op:const (true: BoolC) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selectC: Bitvec 11 %v4 dsl_ret %v5 ] ā1: ?m.2973217TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2972533TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2973712B) %v0; %v2 := op:const (B: Bitvec 1C) %v0; %v3 := pair:%v1 %v2; %v4 := op:orC: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.2974149Goals accomplished! šā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:Select:850 -- precondition: true /- %A = select i1 %B, false, %C => %notb = xor i1 %B, true %A = and %notb, %C -/ theoremGoals accomplished! šalive_Select_850: forall (alive_Select_850: ā {c : Context BaseType} {e : EnvC c} (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eCC: Bitvec 1B : BitvecB: Bitvec 11) ,1: ?m.2996759TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2996754TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2996777B) %v0; %v2 := op:const (āB: Bitvec 1false) %v0; %v3 := op:const (false: BoolC) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selectC: Bitvec 11 %v4 dsl_ret %v5 ] ā1: ?m.2997438TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.2996754TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.2997933B) %v0; %v2 := op:const (āB: Bitvec 1true) %v0; %v3 := pair:%v1 %v2; %v4 := op:xortrue: Bool1 %v3; %v5 := op:const (1: ?m.2998427C) %v0; %v6 := pair:%v4 %v5; %v7 := op:andC: Bitvec 11 %v6 dsl_ret %v7 ] :=1: ?m.2998954Goals accomplished! šā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:Select:855 -- precondition: true /- %A = select i1 %B, %C, false => %A = and %B, %C -/ theoremGoals accomplished! šalive_Select_855: forall (alive_Select_855: ā {c : Context BaseType} {e : EnvC c} (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eCC: Bitvec 1B : BitvecB: Bitvec 11) ,1: ?m.3027566TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3027556TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3027579B) %v0; %v2 := op:const (B: Bitvec 1C) %v0; %v3 := op:const (āC: Bitvec 1false) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selectfalse: Bool1 %v4 dsl_ret %v5 ] ā1: ?m.3028240TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3027556TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3028735B) %v0; %v2 := op:const (B: Bitvec 1C) %v0; %v3 := pair:%v1 %v2; %v4 := op:andC: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.3029172Goals accomplished! šā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool false)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:Select:859 -- precondition: true /- %A = select i1 %B, %C, true => %notb = xor i1 %B, true %A = or %notb, %C -/ theoremGoals accomplished! šalive_Select_859: forall (alive_Select_859: ā {c : Context BaseType} {e : EnvC c} (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eCC: Bitvec 1B : BitvecB: Bitvec 11) ,1: ?m.3051682TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3051672TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3051695B) %v0; %v2 := op:const (B: Bitvec 1C) %v0; %v3 := op:const (āC: Bitvec 1true) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selecttrue: Bool1 %v4 dsl_ret %v5 ] ā1: ?m.3052356TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3051672TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3052851B) %v0; %v2 := op:const (āB: Bitvec 1true) %v0; %v3 := pair:%v1 %v2; %v4 := op:xortrue: Bool1 %v3; %v5 := op:const (1: ?m.3053345C) %v0; %v6 := pair:%v4 %v5; %v7 := op:orC: Bitvec 11 %v6 dsl_ret %v7 ] :=1: ?m.3053872Goals accomplished! šā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) eā (C B : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const B) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const (ofBool true)) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor 1) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e-- Name:Select:851 -- precondition: true /- %r = select i1 %a, %b, %a => %r = and %a, %b -/ theoremGoals accomplished! šalive_Select_851: forall (alive_Select_851: ā {c : Context BaseType} {e : EnvC c} (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eaa: Bitvec 1b : Bitvecb: Bitvec 11) ,1: ?m.3082048TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3082038TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3082061a) %v0; %v2 := op:const (a: Bitvec 1b) %v0; %v3 := triple:%v1 %v2 %v1; %v4 := op:selectb: Bitvec 11 %v3 dsl_ret %v4 ] ā1: ?m.3082509TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3082038TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3082924a) %v0; %v2 := op:const (a: Bitvec 1b) %v0; %v3 := pair:%v1 %v2; %v4 := op:andb: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.3083361Goals accomplished! šā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.and 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:Select:852 -- precondition: true /- %r = select i1 %a, %a, %b => %r = or %a, %b -/ theoremGoals accomplished! šalive_Select_852: forall (alive_Select_852: ā {c : Context BaseType} {e : EnvC c} (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eaa: Bitvec 1b : Bitvecb: Bitvec 11) ,1: ?m.3106030TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3106025TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3106048a) %v0; %v2 := op:const (a: Bitvec 1b) %v0; %v3 := triple:%v1 %v1 %v2; %v4 := op:selectb: Bitvec 11 %v3 dsl_ret %v4 ] ā1: ?m.3106496TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3106025TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β1))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (1: ?m.3106911a) %v0; %v2 := op:const (a: Bitvec 1b) %v0; %v3 := pair:%v1 %v2; %v4 := op:orb: Bitvec 11 %v3 dsl_ret %v4 ] :=1: ?m.3107348Goals accomplished! šā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) eā (a b : Bitvec 1), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.triple (Context.Var.prev Context.Var.last) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.select 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const a) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const b) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.or 1) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))) e-- Name:Select:1100 -- precondition: true /- %r = select i1 true, %X, %Y => %r = %X -/ theoremGoals accomplished! šalive_Select_1100 : forall (alive_Select_1100: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool true)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) ew :w: āNat) (Nat: TypeYY: Bitvec wX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3127259TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (āw: ātrue) %v0; %v2 := op:const (true: BoolX) %v0; %v3 := op:const (X: Bitvec wY) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selectY: Bitvec ww %v4 dsl_ret %v5 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3127259TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:copyX: Bitvec ww %v1 dsl_ret %v2 ] :=w: āGoals accomplished! šā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool true)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool true)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool true)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) e-- Name:Select:1105 -- precondition: true /- %r = select i1 false, %X, %Y => %r = %Y -/ theoremGoals accomplished! šalive_Select_1105 : forall (alive_Select_1105: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool false)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) ew :w: āNat) (Nat: TypeYY: Bitvec wX : BitvecX: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3149265TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (āw: āfalse) %v0; %v2 := op:const (false: BoolX) %v0; %v3 := op:const (X: Bitvec wY) %v0; %v4 := triple:%v1 %v2 %v3; %v5 := op:selectY: Bitvec ww %v4 dsl_ret %v5 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3149265TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āY) %v0; %v2 := op:copyY: Bitvec ww %v1 dsl_ret %v2 ] :=w: āGoals accomplished! šā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool false)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool false)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) eā (w : ā) (Y X : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const (ofBool false)) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const X) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.triple (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.select w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.copy w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))) e-- Name:InstCombineShift: 239 -- precondition: true /- %Op0 = shl %X, C %r = lshr %Op0, C => %Op0 = shl %X, C %r = and %X, (-1 u>> C) -/ theoremGoals accomplished! šalive_InstCombineShift__239 : forall (alive_InstCombineShift__239: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3171304TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:lshrw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3171304TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v5 %v2; %v7 := op:lshr1: ?m.3173265w %v6; %v8 := pair:%v1 %v7; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:InstCombineShift: 279 -- precondition: true /- %Op0 = lshr %X, C %r = shl %Op0, C => %Op0 = lshr %X, C %r = and %X, (-1 << C) -/ theoremGoals accomplished! šalive_InstCombineShift__279 : forall (alive_InstCombineShift__279: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3205192TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:shlw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3205192TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v5 %v2; %v7 := op:shl1: ?m.3207153w %v6; %v8 := pair:%v1 %v7; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:InstCombineShift: 351 -- precondition: true /- %Op0 = mul i7 %X, C1 %r = shl %Op0, C2 => %Op0 = mul i7 %X, C1 %r = mul %X, (C1 << C2) -/ theoremGoals accomplished! šalive_InstCombineShift__351: forall (alive_InstCombineShift__351: ā {c : Context BaseType} {e : EnvC c} (X C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eXX: Bitvec 7C1C1: Bitvec 7C2 : BitvecC2: Bitvec 77) ,7: ?m.3239265TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3239260TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β7))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (7: ?m.3239288X) %v0; %v2 := op:const (X: Bitvec 7C1) %v0; %v3 := pair:%v1 %v2; %v4 := op:mulC1: Bitvec 77 %v3; %v5 := op:const (7: ?m.3239726C2) %v0; %v6 := pair:%v4 %v5; %v7 := op:shlC2: Bitvec 77 %v6 dsl_ret %v7 ] ā7: ?m.3240244TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3239260TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β7))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (7: ?m.3240659X) %v0; %v2 := op:const (X: Bitvec 7C1) %v0; %v3 := pair:%v1 %v2; %v4 := op:mulC1: Bitvec 77 %v3; %v5 := op:const (7: ?m.3241096C2) %v0; %v6 := pair:%v2 %v5; %v7 := op:shlC2: Bitvec 77 %v6; %v8 := pair:%v1 %v7; %v9 := op:mul7: ?m.32416247 %v8 dsl_ret %v9 ] :=7: ?m.3242012Goals accomplished! šā (X C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (X C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (X C1 C2 : Bitvec 7), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C1) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 7) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.mul 7) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:InstCombineShift: 422-1 -- precondition: true /- %Op1 = lshr i31 %X, C %Op0 = add %Y, %Op1 %r = shl %Op0, C => %s = shl %Y, C %a = add %s, %X %Op1 = lshr i31 %X, C %Op0 = add %Y, %Op1 %r = and %a, (-1 << C) -/ theoremGoals accomplished! šalive_InstCombineShift__422_1: forall (alive_InstCombineShift__422_1: ā {c : Context BaseType} {e : EnvC c} (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eYY: Bitvec 31XX: Bitvec 31C : BitvecC: Bitvec 3131) ,31: ?m.3272719TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3272714TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3272742X) %v0; %v2 := op:const (X: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3273180Y) %v0; %v6 := pair:%v5 %v4; %v7 := op:addY: Bitvec 3131 %v6; %v8 := pair:%v7 %v2; %v9 := op:shl31: ?m.327369831 %v8 dsl_ret %v9 ] ā31: ?m.3274075TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3272714TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3274490Y) %v0; %v2 := op:const (Y: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3274927X) %v0; %v6 := pair:%v4 %v5; %v7 := op:addX: Bitvec 3131 %v6; %v8 := pair:%v5 %v2; %v9 := op:lshr31: ?m.327544531 %v8; %v10 := pair:%v1 %v9; %v11 := op:add31: ?m.327583231 %v10; %v12 := op:const (-31: ?m.32762301) %v0; %v13 := pair:%v12 %v2; %v14 := op:shl1: ?m.327653831 %v13; %v15 := pair:%v7 %v14; %v16 := op:and31: ?m.327686731 %v15 dsl_ret %v16 ] :=31: ?m.3277263Goals accomplished! šā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), eval (Op.shl 31) (eval (Op.add 31) (eval (Op.const Y) () id, eval (Op.lshr 31) (eval (Op.const X) () id, eval (Op.const C) () id) id) id, eval (Op.const C) () id) id ā eval (Op.and 31) (eval (Op.add 31) (eval (Op.shl 31) (eval (Op.const Y) () id, eval (Op.const C) () id) id, eval (Op.const X) () id) id, eval (Op.shl 31) (eval (Op.const (-1)) () id, eval (Op.const C) () id) id) idā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) e-- Name:InstCombineShift: 422-2 -- precondition: true /- %Op1 = ashr i31 %X, C %Op0 = add %Y, %Op1 %r = shl %Op0, C => %s = shl %Y, C %a = add %s, %X %Op1 = ashr i31 %X, C %Op0 = add %Y, %Op1 %r = and %a, (-1 << C) -/ theoremGoals accomplished! šalive_InstCombineShift__422_2: forall (alive_InstCombineShift__422_2: ā {c : Context BaseType} {e : EnvC c} (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eYY: Bitvec 31XX: Bitvec 31C : BitvecC: Bitvec 3131) ,31: ?m.3329905TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3329900TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3329928X) %v0; %v2 := op:const (X: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:ashrC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3330366Y) %v0; %v6 := pair:%v5 %v4; %v7 := op:addY: Bitvec 3131 %v6; %v8 := pair:%v7 %v2; %v9 := op:shl31: ?m.333088431 %v8 dsl_ret %v9 ] ā31: ?m.3331261TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3329900TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3331676Y) %v0; %v2 := op:const (Y: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3332113X) %v0; %v6 := pair:%v4 %v5; %v7 := op:addX: Bitvec 3131 %v6; %v8 := pair:%v5 %v2; %v9 := op:ashr31: ?m.333263131 %v8; %v10 := pair:%v1 %v9; %v11 := op:add31: ?m.333301831 %v10; %v12 := op:const (-31: ?m.33334161) %v0; %v13 := pair:%v12 %v2; %v14 := op:shl1: ?m.333372431 %v13; %v15 := pair:%v7 %v14; %v16 := op:and31: ?m.333405331 %v15 dsl_ret %v16 ] :=31: ?m.3334449Goals accomplished! šā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), eval (Op.shl 31) (eval (Op.add 31) (eval (Op.const Y) () id, eval (Op.ashr 31) (eval (Op.const X) () id, eval (Op.const C) () id) id) id, eval (Op.const C) () id) id ā eval (Op.and 31) (eval (Op.add 31) (eval (Op.shl 31) (eval (Op.const Y) () id, eval (Op.const C) () id) id, eval (Op.const X) () id) id, eval (Op.shl 31) (eval (Op.const (-1)) () id, eval (Op.const C) () id) id) idā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) e-- Name:InstCombineShift: 440 -- precondition: true /- %s = lshr %X, C %Op1 = and %s, C2 %Op0 = xor %Y, %Op1 %r = shl %Op0, C => %a = and %X, (C2 << C) %y2 = shl %Y, C %s = lshr %X, C %Op1 = and %s, C2 %Op0 = xor %Y, %Op1 %r = xor %a, %y2 -/ theoremGoals accomplished! šalive_InstCombineShift__440 : forall (alive_InstCombineShift__440: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 10 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 18 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wXX: Bitvec wCC: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3387604TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v4 %v5; %v7 := op:andC2: Bitvec ww %v6; %v8 := op:const (w: āY) %v0; %v9 := pair:%v8 %v7; %v10 := op:xorY: Bitvec ww %v9; %v11 := pair:%v10 %v2; %v12 := op:shlw: āw %v11 dsl_ret %v12 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3387604TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := op:const (C2: Bitvec wC) %v0; %v4 := pair:%v2 %v3; %v5 := op:shlC: Bitvec ww %v4; %v6 := pair:%v1 %v5; %v7 := op:andw: āw %v6; %v8 := op:const (w: āY) %v0; %v9 := pair:%v8 %v3; %v10 := op:shlY: Bitvec ww %v9; %v11 := pair:%v1 %v3; %v12 := op:lshrw: āw %v11; %v13 := pair:%v12 %v2; %v14 := op:andw: āw %v13; %v15 := pair:%v8 %v14; %v16 := op:xorw: āw %v15; %v17 := pair:%v7 %v10; %v18 := op:xorw: āw %v17 dsl_ret %v18 ] :=w: āGoals accomplished! šā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 10 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 18 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) eā (w : ā) (Y X C C2 : Bitvec w), eval (Op.shl w) (eval (Op.xor w) (eval (Op.const Y) () id, eval (Op.and w) (eval (Op.lshr w) (eval (Op.const X) () id, eval (Op.const C) () id) id, eval (Op.const C2) () id) id) id, eval (Op.const C) () id) id ā eval (Op.xor w) (eval (Op.and w) (eval (Op.const X) () id, eval (Op.shl w) (eval (Op.const C2) () id, eval (Op.const C) () id) id) id, eval (Op.shl w) (eval (Op.const Y) () id, eval (Op.const C) () id) id) idā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 10 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 18 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) eā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 10 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev Context.Var.last)) TSSA.rgn0) (TSSA.assign 4 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 5 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 10 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 18 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) e-- Name:InstCombineShift: 458 -- precondition: true /- %s = ashr i31 %X, C %Op0 = sub %s, %Y %r = shl %Op0, C => %s2 = shl %Y, C %a = sub %X, %s2 %s = ashr i31 %X, C %Op0 = sub %s, %Y %r = and %a, (-1 << C) -/ theoremGoals accomplished! šalive_InstCombineShift__458: forall (alive_InstCombineShift__458: ā {c : Context BaseType} {e : EnvC c} (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eYY: Bitvec 31XX: Bitvec 31C : BitvecC: Bitvec 3131) ,31: ?m.3466865TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3466860TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3466888X) %v0; %v2 := op:const (X: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:ashrC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3467326Y) %v0; %v6 := pair:%v4 %v5; %v7 := op:subY: Bitvec 3131 %v6; %v8 := pair:%v7 %v2; %v9 := op:shl31: ?m.346784431 %v8 dsl_ret %v9 ] ā31: ?m.3468221TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3466860TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3468636Y) %v0; %v2 := op:const (Y: Bitvec 31C) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3469073X) %v0; %v6 := pair:%v5 %v4; %v7 := op:subX: Bitvec 3131 %v6; %v8 := pair:%v5 %v2; %v9 := op:ashr31: ?m.346959131 %v8; %v10 := pair:%v9 %v1; %v11 := op:sub31: ?m.346997831 %v10; %v12 := op:const (-31: ?m.34703761) %v0; %v13 := pair:%v12 %v2; %v14 := op:shl1: ?m.347068431 %v13; %v15 := pair:%v7 %v14; %v16 := op:and31: ?m.347101331 %v15 dsl_ret %v16 ] :=31: ?m.3471409Goals accomplished! šā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), eval (Op.shl 31) (eval (Op.sub 31) (eval (Op.ashr 31) (eval (Op.const X) () id, eval (Op.const C) () id) id, eval (Op.const Y) () id) id, eval (Op.const C) () id) id ā eval (Op.and 31) (eval (Op.sub 31) (eval (Op.const X) () id, eval (Op.shl 31) (eval (Op.const Y) () id, eval (Op.const C) () id) id) id, eval (Op.shl 31) (eval (Op.const (-1)) () id, eval (Op.const C) () id) id) idā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) eā (Y X C : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev Context.Var.last)) (TSSA.assign 7 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.ashr 31) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 11 (TSSA.op (Op.sub 31) Context.Var.last TSSA.rgn0) (TSSA.assign 12 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))) (TSSA.assign 14 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) Context.Var.last) (TSSA.assign 16 (TSSA.op (Op.and 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))) e-- Name:InstCombineShift: 476 -- precondition: true /- %shr = lshr %X, C %s = and %shr, C2 %Op0 = or %s, %Y %r = shl %Op0, C => %s2 = shl %Y, C %a = and %X, (C2 << C) %shr = lshr %X, C %s = and %shr, C2 %Op0 = or %s, %Y %r = or %a, %s2 -/ theoremGoals accomplished! šalive_InstCombineShift__476 : forall (alive_InstCombineShift__476: ā {c : Context BaseType} {e : EnvC c} (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) (TSSA.assign 16 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))) (TSSA.assign 18 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) ew :w: āNat) (Nat: TypeYY: Bitvec wXX: Bitvec wCC: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3524564TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v4 %v5; %v7 := op:andC2: Bitvec ww %v6; %v8 := op:const (w: āY) %v0; %v9 := pair:%v7 %v8; %v10 := op:orY: Bitvec ww %v9; %v11 := pair:%v10 %v2; %v12 := op:shlw: āw %v11 dsl_ret %v12 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3524564TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āY) %v0; %v2 := op:const (Y: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := op:const (w: āX) %v0; %v6 := op:const (X: Bitvec wC2) %v0; %v7 := pair:%v6 %v2; %v8 := op:shlC2: Bitvec ww %v7; %v9 := pair:%v5 %v8; %v10 := op:andw: āw %v9; %v11 := pair:%v5 %v2; %v12 := op:lshrw: āw %v11; %v13 := pair:%v12 %v6; %v14 := op:andw: āw %v13; %v15 := pair:%v14 %v1; %v16 := op:orw: āw %v15; %v17 := pair:%v10 %v4; %v18 := op:orw: āw %v17 dsl_ret %v18 ] :=w: āGoals accomplished! šā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) (TSSA.assign 16 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))) (TSSA.assign 18 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) eā (w : ā) (Y X C C2 : Bitvec w), eval (Op.shl w) (eval (Op.or w) (eval (Op.and w) (eval (Op.lshr w) (eval (Op.const X) () id, eval (Op.const C) () id) id, eval (Op.const C2) () id) id, eval (Op.const Y) () id) id, eval (Op.const C) () id) id ā eval (Op.or w) (eval (Op.and w) (eval (Op.const X) () id, eval (Op.shl w) (eval (Op.const C2) () id, eval (Op.const C) () id) id) id, eval (Op.shl w) (eval (Op.const Y) () id, eval (Op.const C) () id) id) idā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) (TSSA.assign 16 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))) (TSSA.assign 18 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) eā (w : ā) (Y X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.op (Op.const Y) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const Y) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const X) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) TSSA.rgn0) (TSSA.assign 7 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (TSSA.assign 8 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 9 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))) Context.Var.last) (TSSA.assign 10 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 11 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))) (TSSA.assign 12 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 13 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))) (TSSA.assign 14 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.assign 15 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))))))))))) (TSSA.assign 16 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.assign 17 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))))))))))) (TSSA.assign 18 (TSSA.op (Op.or w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))))))))))))))) e-- Name:InstCombineShift: 497 -- precondition: true /- %Op0 = xor %X, C2 %r = lshr %Op0, C => %s2 = lshr %X, C %Op0 = xor %X, C2 %r = xor %s2, (C2 u>> C) -/ theoremGoals accomplished! šalive_InstCombineShift__497 : forall (alive_InstCombineShift__497: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wCC: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3603528TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := pair:%v1 %v2; %v4 := op:xorC2: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v4 %v5; %v7 := op:lshrC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3603528TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:lshrC: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v1 %v5; %v7 := op:xorC2: Bitvec ww %v6; %v8 := pair:%v5 %v2; %v9 := op:lshrw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:xorw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C C2 : Bitvec w), eval (Op.lshr w) (eval (Op.xor w) (eval (Op.const X) () id, eval (Op.const C2) () id) id, eval (Op.const C) () id) id ā eval (Op.xor w) (eval (Op.lshr w) (eval (Op.const X) () id, eval (Op.const C) () id) id, eval (Op.lshr w) (eval (Op.const C2) () id, eval (Op.const C) () id) id) idā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.xor w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:InstCombineShift: 497''' -- precondition: true /- %Op0 = add %X, C2 %r = shl %Op0, C => %s2 = shl %X, C %Op0 = add %X, C2 %r = add %s2, (C2 << C) -/ theoremGoals accomplished! šalive_InstCombineShift__497''' : forall (alive_InstCombineShift__497''': ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wCC: Bitvec wC2 : BitvecC2: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3648888TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC2) %v0; %v3 := pair:%v1 %v2; %v4 := op:addC2: Bitvec ww %v3; %v5 := op:const (w: āC) %v0; %v6 := pair:%v4 %v5; %v7 := op:shlC: Bitvec ww %v6 dsl_ret %v7 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3648888TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := op:const (w: āC2) %v0; %v6 := pair:%v1 %v5; %v7 := op:addC2: Bitvec ww %v6; %v8 := pair:%v5 %v2; %v9 := op:shlw: āw %v8; %v10 := pair:%v4 %v9; %v11 := op:addw: āw %v10 dsl_ret %v11 ] :=w: āGoals accomplished! šā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C C2 : Bitvec w), eval (Op.shl w) (eval (Op.add w) (eval (Op.const X) () id, eval (Op.const C2) () id) id, eval (Op.const C) () id) id ā eval (Op.add w) (eval (Op.shl w) (eval (Op.const X) () id, eval (Op.const C) () id) id, eval (Op.shl w) (eval (Op.const C2) () id, eval (Op.const C) () id) id) idā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) eā (w : ā) (X C C2 : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C2) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev Context.Var.last)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 10 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last))))) Context.Var.last) (TSSA.assign 11 (TSSA.op (Op.add w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))))) e-- Name:InstCombineShift: 582 -- precondition: true /- %Op0 = shl %X, C %r = lshr %Op0, C => %Op0 = shl %X, C %r = and %X, (-1 u>> C) -/ theoremGoals accomplished! šalive_InstCombineShift__582 : forall (alive_InstCombineShift__582: ā {c : Context BaseType} {e : EnvC c} (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) ew :w: āNat) (Nat: TypeXX: Bitvec wC : BitvecC: Bitvec ww) ,w: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3694087TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := pair:%v4 %v2; %v6 := op:lshrw: āw %v5 dsl_ret %v6 ] āw: āTSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3694087TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType βw))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (w: āX) %v0; %v2 := op:const (X: Bitvec wC) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlC: Bitvec ww %v3; %v5 := op:const (-w: ā1) %v0; %v6 := pair:%v5 %v2; %v7 := op:lshr1: ?m.3696048w %v6; %v8 := pair:%v1 %v7; %v9 := op:andw: āw %v8 dsl_ret %v9 ] :=w: āGoals accomplished! šā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (w : ā) (X C : Bitvec w), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev Context.Var.last))) (TSSA.assign 6 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last)))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const X) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const C) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl w) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const (-1)) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) (TSSA.assign 7 (TSSA.op (Op.lshr w) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) Context.Var.last) (TSSA.assign 9 (TSSA.op (Op.and w) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) e-- Name:InstCombineShift: 724 -- precondition: true /- %Op0 = shl i31 C1, %A %r = shl %Op0, C2 => %Op0 = shl i31 C1, %A %r = shl (C1 << C2), %A -/ theoremGoals accomplished! šalive_InstCombineShift__724: forall (alive_InstCombineShift__724: ā {c : Context BaseType} {e : EnvC c} (A C2 C1 : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eAA: Bitvec 31C2C2: Bitvec 31C1 : BitvecC1: Bitvec 3131) ,31: ?m.3728160TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3728155TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3728183C1) %v0; %v2 := op:const (C1: Bitvec 31A) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlA: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3728621C2) %v0; %v6 := pair:%v4 %v5; %v7 := op:shlC2: Bitvec 3131 %v6 dsl_ret %v7 ] ā31: ?m.3729139TSSA.eval (Op :=TSSA.eval: {Op β : Type} ā [inst : Goedel β] ā [inst_1 : TypedUserSemantics Op β] ā {Ī : Context β} ā {i : TSSAIndex β} ā TSSA Op Ī i ā EnvC Ī ā TSSAIndex.eval iOp) (e :=Op: Typee) (i :=e: ?m.3728155TSSAIndex.STMT (TSSAIndex.STMT: {β : Type} ā SSA.UserType β ā TSSAIndex βUserType.base (BaseType.bitvecUserType.base: {β : Type} ā β ā SSA.UserType β31))) [dsl_bb| ^bb %v0 := unit: ; %v1 := op:const (31: ?m.3729554C1) %v0; %v2 := op:const (C1: Bitvec 31A) %v0; %v3 := pair:%v1 %v2; %v4 := op:shlA: Bitvec 3131 %v3; %v5 := op:const (31: ?m.3729991C2) %v0; %v6 := pair:%v1 %v5; %v7 := op:shlC2: Bitvec 3131 %v6; %v8 := pair:%v7 %v2; %v9 := op:shl31: ?m.373052431 %v8 dsl_ret %v9 ] :=31: ?m.3730907Goals accomplished! šā (A C2 C1 : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (A C2 C1 : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eā (A C2 C1 : Bitvec 31), TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))) e ā TSSA.eval (TSSA.assign 0 TSSA.unit (TSSA.assign 1 (TSSA.op (Op.const C1) Context.Var.last TSSA.rgn0) (TSSA.assign 2 (TSSA.op (Op.const A) (Context.Var.prev Context.Var.last) TSSA.rgn0) (TSSA.assign 3 (TSSA.pair (Context.Var.prev Context.Var.last) Context.Var.last) (TSSA.assign 4 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 5 (TSSA.op (Op.const C2) (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) TSSA.rgn0) (TSSA.assign 6 (TSSA.pair (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))) Context.Var.last) (TSSA.assign 7 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.assign 8 (TSSA.pair Context.Var.last (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev (Context.Var.prev Context.Var.last)))))) (TSSA.assign 9 (TSSA.op (Op.shl 31) Context.Var.last TSSA.rgn0) (TSSA.ret Context.Var.last))))))))))) eGoals accomplished! š